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

利用できるグラントタイプ

仕様準拠のグラント

Auth0 拡張グラント

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 extension、および仕様準拠のすべてのグラントタイプが設定されました。 この時点で、新規の Auth0 のお客様は、自身のアプリケーションにレガシーグラントタイプを追加できなくなりました。レガシーグラントタイプは、互換性のない変更を避けながら新しいフローへ移行できるよう、以前からのお客様にのみ提供されています。2017 年 6 月 8 日より前からご利用のお客様は、 または Auth0 のいずれかを使用して、レガシーグラントタイプを有効化 できます。 現在レガシーグラントタイプを使用している場合は、代わりに使用すべき安全な代替手段を以下の表で確認してください。たとえば、認証を実装している場合は、 oauth/ro endpoint の代わりに Universal Login を使用してください。

グラントタイプの対応

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

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

Native アプリケーションまたはシングルページアプリケーション (SPA) を Auth0 Dashboard で登録すると、自動的にパブリックアプリケーションとしてフラグ付けされます。これは、token_endpoint_auth_method フラグが none に設定されていることで示されます。デフォルトでは、Auth0 は次の grant_types が有効になったパブリックアプリケーションを作成します。
  • implicit
  • authorization_code
  • refresh_token
Native アプリでは、device_code グラントタイプも使用できます。 パブリックアプリケーションでは、client_credentials グラントタイプは使用できません。このグラントタイプを使用するには、アプリケーションを公開ではなく機密として設定する必要があります。token_endpoint_auth_methodclient_secret_postclient_secret_basic、または private_key_jwt に設定するには、Auth0 Management API の Update a client エンドポイントを使用します。詳しくは、Application Credentials を参照してください。

機密アプリケーション

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

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

信頼できるファーストパーティアプリケーションでは、confidential applications と同じ 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
Auth0 Dashboard を使用してこれらのグラントタイプを有効化または無効化する場合は、アプリケーションに Password または MFA グラントタイプを追加すると、すべての Password および のグラントタイプが有効になる点に注意してください。これらを個別に選択することはできません。

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

サードパーティアプリケーションでサポートされるグラントタイプは、OAuth 2.1のベストプラクティスに準拠した一部のものに限られます。 詳しくは、サードパーティアプリケーション向けのセキュリティコントロールを参照してください。

詳しくはこちら