メインコンテンツへスキップ
アプリケーションのグラントタイプ (またはフロー) は、アプリケーションがアクセストークンを取得する方法であり、認証情報を公開することなく、別のエンティティにリソースへの限定的なアクセスを付与するための仕組みです。OAuth 2.0 プロトコル は複数のグラントタイプをサポートしており、それぞれ異なる種類のアクセスを可能にします。 アプリケーションの要件によっては、他よりも適したグラントタイプがあります。Auth0 にはさまざまな認証フローと があり、アプリケーションの grant_types プロパティに基づいて、どのグラントタイプが適切かを指定できます。 たとえば、モバイルアプリケーションを保護する場合は、Authorization Code Flow with Proof Key for Code Exchange (PKCE) が最も適しています。 一方、シングルページアプリケーション (SPA) などのクライアントサイドアプリケーションを保護し、サーバー間でトークンをやり取りしない場合は、Form Post を使用した Implicit Flow が最も適しています。 アプリケーションの登録時に使用できるグラントタイプはいくつかあります。これらは、次のカテゴリに分けられます。
  • 仕様準拠グラント: Connect (OIDC) など、外部仕様で定義され、それに準拠するグラント。
  • Auth0 拡張グラント: 追加のクライアントをサポートしたり、 と他の信頼フレームワークとの橋渡しをしたりするために、OAuth 拡張メカニズムに準拠した Auth0 固有のグラント。
  • Auth0 レガシーグラント: レガシー顧客のみが利用できる従来のグラントタイプです。レガシー顧客の場合は、より安全な代替手段に移行することを強く推奨します。

利用可能なグラントタイプ

仕様に準拠したグラント

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/ro
  • http://auth0.com/oauth/legacy/grant-type/ro/jwt-bearer
  • http://auth0.com/oauth/legacy/grant-type/delegation/refresh_token
  • http://auth0.com/oauth/legacy/grant-type/delegation/id_token
  • http://auth0.com/oauth/legacy/grant-type/access_token
レガシーグラントタイプは、従来のグラントタイプであり、レガシー顧客のみがサポート対象です。レガシー顧客の場合は、より安全な代替手段への移行を強く推奨します。 2017 年 6 月 8 日以降、すべてのアプリケーションには、必ず設定する必要がある grant_types プロパティが追加されました。当時の Auth0 顧客の機能に変更が生じないようにするため、既存のすべてのアプリケーションの grant_types プロパティには、Auth0 のすべてのレガシーグラントタイプ、Auth0 拡張機能のグラントタイプ、および仕様準拠のグラントタイプが設定されました。 この時点で、新規の Auth0 顧客はアプリケーションにレガシーグラントタイプを追加できなくなりました。レガシーグラントタイプは、破壊的変更を避けながら新しいフローへ移行できるよう、既存顧客にのみ提供されています。2017 年 6 月 8 日より前から顧客である場合は、 または Auth0 の を使用して、レガシーグラントタイプを有効化できます。 現在レガシーグラントタイプを使用している場合は、代わりに使用すべき安全な代替手段を以下の表で確認してください。たとえば、認証を実装している場合は、 oauth/ro エンドポイントではなく、Universal Login を使用してください。

グラントタイプのマッピング

アプリケーションは登録時に、その種類、つまり機密アプリケーションかパブリックアプリケーションかに応じて、利用できるグラントタイプが異なります。さらに、信頼されたファーストパーティアプリケーションでは、追加のグラントタイプも利用できます。

パブリックアプリケーション

Native Application またはシングルページアプリケーション (SPA) を Dashboard に登録すると、自動的にパブリックアプリケーションとして扱われます。これは、token_endpoint_auth_method フラグが none に設定されていることを示します。デフォルトでは、Auth0 は次の grant_types を有効にした状態でパブリックアプリケーションを作成します。
  • implicit
  • authorization_code
  • refresh_token
Native Apps では、device_code グラントタイプも使用できます。 パブリックアプリケーションでは、client_credentials グラントタイプは使用できません。このグラントタイプを使用するには、アプリケーションをパブリックではなく機密アプリケーションとして設定する必要があります。Auth0 Management API の クライアントを更新 エンドポイントを使用して、token_endpoint_auth_methodclient_secret_post, client_secret_basic、または private_key_jwt に設定してください。詳細については、アプリケーション認証情報 を参照してください。

機密アプリケーション

Regular Web Application またはマシン間 (M2M) Application を Auth0 Dashboard に登録すると、自動的に機密アプリケーションとしてマークされます。これは、token_endpoint_auth_method フラグが none 以外に設定されていることによって示されます。デフォルトでは、Auth0 は次の grant_types が有効な機密アプリケーションを作成します。
  • implicit
  • authorization_code
  • refresh_token
  • client_credentials

信頼できるファーストパーティアプリケーション

信頼できるファーストパーティアプリケーションでは、機密アプリケーションと同じ grant_types に加えて、次のものも有効です。
  • password
  • http://auth0.com/oauth/grant-type/password-realm
  • http://auth0.com/oauth/grant-type/mfa-oob
  • http://auth0.com/oauth/grant-type/mfa-otp
  • http://auth0.com/oauth/grant-type/mfa-recovery-code
Dashboard を使用してこれらのグラントタイプを有効または無効にする場合は、アプリケーションに Password または MFA グラントタイプを追加すると、すべての Password および グラントタイプが有効になる点に注意してください。これらを個別に選択することはできません。

サードパーティアプリケーションの制限

サードパーティアプリケーション では、OAuth 2.1 のベストプラクティス に沿った一部のグラントタイプのみをサポートしています。
グラントタイプサードパーティアプリケーションで利用可能
authorization_codeはい (PKCE 必須)
refresh_tokenはい
client_credentialsはい (機密クライアントのみ)
implicitいいえ
passwordいいえ
urn:ietf:params:oauth:grant-type:device_codeいいえ
MFA グラントいいえ
レガシーグラントいいえ
詳細については、サードパーティアプリケーションのセキュリティ制御 を参照してください。

詳しくはこちら