OAuth 2.0 許可
Amazon Cognito ユーザープール OAuth 2.0 認可サーバーは、3 種類の OAuth 2.0 認可付与
- 認可コード付与
-
認証リクエストが成功すると、認可サーバーは、
code
パラメータの認可コードをコールバック URL のパラメータに追加します。次に、トークンエンドポイント と、アクセス、ID、更新トークンのコードを交換することができます。認可コード付与をリクエストするには、リクエストでresponse_type
をcode
に設定します。リクエスト例については、「認可コード付与」を参照してください。認可コード付与は、最も安全な認可付与の形式です。トークンの内容がユーザーに直接表示されることはありません。代わりに、ユーザーのトークンを取得して安全に保管する責任はアプリにあります。Amazon Cognito では、認可コード付与が 3 種類のトークン (ID、アクセス、更新) すべてを認可サーバーから取得する唯一の方法です。Amazon Cognito ユーザープール API による認証から 3 種類のトークンをすべて取得することもできますが、API は
aws.cognito.signin.user.admin
以外のスコープを持つアクセストークンを発行しません。 - 暗黙の許可
-
認証リクエストが成功すると、認可サーバーは
access_token
パラメータのアクセストークンと、id_token
パラメータの ID トークンを、コールバック URL に追加します。暗黙的な許可では、トークンエンドポイント に追加の操作は必要ありません。暗黙的な許可をリクエストするには、リクエストでresponse_type
をtoken
に設定します。暗黙的な許可では、ID とアクセストークンのみが生成されます。リクエスト例については、「openid スコープを使用しないトークン付与」を参照してください。暗黙的な許可は、レガシーの認可付与方法です。認可コード付与とは異なり、ユーザーはトークンを傍受して検査できます。暗黙的な許可によるトークンの配信を防ぐには、認可コード付与のみをサポートするようにアプリクライアントを設定します。
- クライアント認証情報
-
クライアント認証情報は、マシン間アクセスに対する認可のみを付与します。クライアント認証情報許可を受けるには、認可エンドポイント をバイパスして、トークンエンドポイント に直接リクエストを生成してください。アプリクライアントにはクライアントシークレットが必要で、クライアント認証情報許可のみをサポートする必要があります。リクエストが成功すると、認可サーバーがアクセストークンを返します。
クライアント認証情報許可からのアクセストークンは、OAuth 2.0 スコープを含む認可メカニズムです。通常、トークンには、アクセス保護された API に対する HTTP 操作を許可するカスタムスコープクレームが含まれます。詳細については、「リソースサーバーを使用したスコープ、M2M、および API」を参照してください。
クライアント認証情報の付与は、AWS 請求にコストを追加します。詳細については、「Amazon Cognito の料金
」を参照してください。
これらの付与とその実装の詳細については、「AWS Security Blog」の「OAuth 2.0 in Amazon Cognito: Learn about the different OAuth 2.0 grants