アプリケーションの付与タイプ

アプリケーションの付与タイプ(またはフロー)は、アプリケーションがアクセストークンを取得する方法であり、また、資格情報を公開することなく、他のエンティティにリソースへの限定的なアクセスを付与する方法です。OAuth 2.0プロトコルでは、複数の付与タイプをサポートしているため、さまざまな種類のアクセスを実現できます。

付与タイプの中には、アプリケーションのニーズによって、適したものとそうでないものがあります。Auth0にはさまざまな認証・許可フローが用意されていますが、どれが最も適しているかは、アプリケーションのgrant_typesプロパティに基づいて示すことができます。

たとえば、モバイルアプリケーションをセキュリティ保護したい場合は、Proof Key for Code Exchange(PKCE)を使用した認可コードフローが最も適切です。

また、シングルページアプリケーション(SPA)のようなクライアント側アプリケーションを保護する場合は、サーバー間でトークンをやり取りしていないなら、フォームポストを使用した暗黙的フローが最も適切です。

アプリケーションを登録する際に有効な各種付与タイプは、次のようなカテゴリに分かれます。

  • 標準準拠型付与OpenID Connect(OIDC)などの外部標準に適合する付与。

  • Auth0拡張機能型付与:追加のクライアントをサポートしたり、OAuthと他の信頼フレームワーク間の橋渡しをしたりするために、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/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拡張機能、および仕様に準拠したすべての付与タイプが設定されました。

現在、新規顧客の方は、アプリケーションにレガシーの付与タイプを追加できません。レガシーの付与タイプは、新しいフローへの移行をスムーズに実施できるようにするため、従来からの顧客のみを対象に提供されています。2017年6月8日以前のお客様は、Auth0 DashboardまたはAuth0 Management APIを使用してレガシー付与タイプを有効にすることができます。

現在、レガシーの付与タイプを使っている場合は、下のチャートで、今後どのセキュリティ対策を使用すべきかご確認ください。たとえば、パスワードレス認証を実装している場合は、

oauth/roエンドポイントの代わりにユニバーサルログインを使用してください。

付与タイプのマッピング

アプリケーションを登録すると、その種類(特にアプリケーションが機密か公開か)に応じて、異なる付与タイプが利用できるようになります。さらに、信頼できるファーストパーティのアプリケーションに対しては、さらに多くの付与タイプが用意されています。

公開アプリケーションは資格情報を安全に保持

ネイティブアプリケーションやシングルページアプリケーション(SPA)をDashboardで登録すると、自動的に公開アプリケーションのフラグが付きます。具体的には、token_endpoint_auth_methodフラグがnoneに設定されます。デフォルトでは、Auth0で作成される公開アプリケーションでは、以下のgrant_typesが有効になっています。

  • implicit

  • code_verifier

  • refresh_token

ネイティブアプリでは、device_code付与タイプも使用できます。

公開アプリケーションでclient_credentials付与タイプを使用することはできません。この付与タイプを使用したい場合は、アプリケーションを公開ではなく機密として設定してください。Auth0 Management APIのクライアント更新エンドポイントを使用して、token_endpoint_auth_methodclient_secret_postclient_secret_basic、またはprivate_key_jwtに設定します。詳細については、「アプリケーションの資格情報」をお読みください。

機密アプリケーション

通常のWebアプリケーションやマシンツーマシン(M2M)アプリケーションをAuth0 Dashboardで登録すると、自動的に機密アプリケーションのフラグが付きます。具体的には、これはtoken_endpoint_auth_methodフラグがnone以外の値に設定されていることで示されます。デフォルトでは、Auth0で作成される機密アプリケーションでは、以下のgrant_typesが有効になっています。

  • implicit

  • code_verifier

  • refresh_token

  • client_credentials

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

信頼できるファーストパーティーアプリケーションは、機密アプリケーションと同じgrant_typesが有効になっており、さらに以下のものも含まれます。

  • パスワード

  • 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付与タイプをアプリケーションに追加すると、すべてのパスワードおよびMFA付与タイプが有効になることに注意してください。個別に選択することはできません。

もっと詳しく