アプリケーションの付与タイプ
アプリケーションの付与タイプ(またはフロー)は、アプリケーションがアクセストークンを取得する方法であり、また、資格情報を公開することなく、他のエンティティにリソースへの限定的なアクセスを付与する方法です。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_method
をclient_secret_post
、client_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付与タイプが有効になることに注意してください。個別に選択することはできません。