grant_types プロパティに基づいて、どのグラントタイプが適切かを指定できます。
たとえば、モバイルアプリケーションを保護する場合は、Authorization Code Flow with Proof Key for Code Exchange (PKCE) が最も適しています。
一方、シングルページアプリケーション (SPA) などのクライアントサイドアプリケーションを保護し、サーバー間でトークンをやり取りしない場合は、Form Post を使用した Implicit Flow が最も適しています。
アプリケーションの登録時に使用できるグラントタイプはいくつかあります。これらは、次のカテゴリに分けられます。
- 仕様準拠グラント: Connect (OIDC) など、外部仕様で定義され、それに準拠するグラント。
- Auth0 拡張グラント: 追加のクライアントをサポートしたり、 と他の信頼フレームワークとの橋渡しをしたりするために、OAuth 拡張メカニズムに準拠した Auth0 固有のグラント。
- Auth0 レガシーグラント: レガシー顧客のみが利用できる従来のグラントタイプです。レガシー顧客の場合は、より安全な代替手段に移行することを強く推奨します。
利用可能なグラントタイプ
仕様に準拠したグラント
| グラントタイプ | 説明 |
|---|---|
implicit | インプリシットグラント |
authorization_code | 認可コードグラント |
client_credentials | クライアントクレデンシャルグラント |
password | リソースオーナーパスワードグラント |
refresh_token | リフレッシュトークンを使用する |
urn:ietf:params:oauth:grant-type:device_code | デバイス認可グラント |
Auth0 拡張グラント
| グラントタイプ | 説明 |
|---|---|
http://auth0.com/oauth/grant-type/password-realm | 特定のレルムを指定できる、リソースオーナーパスワードグラント に類似した拡張グラントを使用します |
http://auth0.com/oauth/grant-type/mfa-oob | 多要素認証 OOB グラントリクエスト |
http://auth0.com/oauth/grant-type/mfa-otp | 多要素認証 OTP グラントリクエスト |
http://auth0.com/oauth/grant-type/mfa-recovery-code | 多要素認証のリカバリーコード用グラントリクエスト |
http://auth0.com/oauth/grant-type/passwordless/otp | 埋め込み型パスワードレスログインのグラントリクエスト |
Auth0 レガシーグラント
http://auth0.com/oauth/legacy/grant-type/rohttp://auth0.com/oauth/legacy/grant-type/ro/jwt-bearerhttp://auth0.com/oauth/legacy/grant-type/delegation/refresh_tokenhttp://auth0.com/oauth/legacy/grant-type/delegation/id_tokenhttp://auth0.com/oauth/legacy/grant-type/access_token
grant_types プロパティが追加されました。当時の Auth0 顧客の機能に変更が生じないようにするため、既存のすべてのアプリケーションの grant_types プロパティには、Auth0 のすべてのレガシーグラントタイプ、Auth0 拡張機能のグラントタイプ、および仕様準拠のグラントタイプが設定されました。
この時点で、新規の Auth0 顧客はアプリケーションにレガシーグラントタイプを追加できなくなりました。レガシーグラントタイプは、破壊的変更を避けながら新しいフローへ移行できるよう、既存顧客にのみ提供されています。2017 年 6 月 8 日より前から顧客である場合は、 または Auth0 の を使用して、レガシーグラントタイプを有効化できます。
現在レガシーグラントタイプを使用している場合は、代わりに使用すべき安全な代替手段を以下の表で確認してください。たとえば、認証を実装している場合は、
oauth/ro エンドポイントではなく、Universal Login を使用してください。
グラントタイプのマッピング
パブリックアプリケーション
token_endpoint_auth_method フラグが none に設定されていることを示します。デフォルトでは、Auth0 は次の grant_types を有効にした状態でパブリックアプリケーションを作成します。
implicitauthorization_coderefresh_token
device_code グラントタイプも使用できます。
パブリックアプリケーションでは、client_credentials グラントタイプは使用できません。このグラントタイプを使用するには、アプリケーションをパブリックではなく機密アプリケーションとして設定する必要があります。Auth0 Management API の クライアントを更新 エンドポイントを使用して、token_endpoint_auth_method を client_secret_post, client_secret_basic、または private_key_jwt に設定してください。詳細については、アプリケーション認証情報 を参照してください。
機密アプリケーション
token_endpoint_auth_method フラグが none 以外に設定されていることによって示されます。デフォルトでは、Auth0 は次の grant_types が有効な機密アプリケーションを作成します。
implicitauthorization_coderefresh_tokenclient_credentials
信頼できるファーストパーティアプリケーション
grant_types に加えて、次のものも有効です。
passwordhttp://auth0.com/oauth/grant-type/password-realmhttp://auth0.com/oauth/grant-type/mfa-oobhttp://auth0.com/oauth/grant-type/mfa-otphttp://auth0.com/oauth/grant-type/mfa-recovery-code
Password または MFA グラントタイプを追加すると、すべての Password および グラントタイプが有効になる点に注意してください。これらを個別に選択することはできません。
サードパーティアプリケーションの制限
| グラントタイプ | サードパーティアプリケーションで利用可能 |
|---|---|
authorization_code | はい (PKCE 必須) |
refresh_token | はい |
client_credentials | はい (機密クライアントのみ) |
implicit | いいえ |
password | いいえ |
urn:ietf:params:oauth:grant-type:device_code | いいえ |
| MFA グラント | いいえ |
| レガシーグラント | いいえ |