OAuth 2.0 許可 - Amazon Cognito

OAuth 2.0 許可

Amazon Cognito ユーザープール OAuth 2.0 認可サーバーは、3 種類の OAuth 2.0 認可付与に対応してトークンを発行します。ユーザープール内の各アプリクライアントに、サポートされる許可タイプを設定できます。暗黙的付与または認可コード付与と同じアプリケーションクライアントで、クライアント認証情報付与を有効にすることはできません。暗黙的コード付与と認可コード付与のリクエストは、認可エンドポイント で開始され、クライアント認証情報付与のリクエストは トークンエンドポイント で開始されます。

認可コード付与

認証リクエストが成功すると、認可サーバーは、code パラメータの認可コードをコールバック URL のパラメータに追加します。次に、トークンエンドポイント と、アクセス、ID、更新トークンのコードを交換することができます。認可コード付与をリクエストするには、リクエストで response_typecode に設定します。リクエスト例については、「認可コード付与」を参照してください。

認可コード付与は、最も安全な認可付与の形式です。トークンの内容がユーザーに直接表示されることはありません。代わりに、ユーザーのトークンを取得して安全に保管する責任はアプリにあります。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」を参照してください。