翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
認可エンドポイント
/oauth2/authorize
エンドポイントは、2 つのリダイレクト先をサポートするリダイレクトエンドポイントです。に identity_provider
または idp_identifier
パラメータを含めるとURL、その ID プロバイダー (IdP) のサインインページにユーザーをサイレントにリダイレクトします。それ以外の場合、リクエストに含めたのと同じURLパラメータログインエンドポイントで にリダイレクトされます。
認証エンドポイントは、ホストされている UI または IdP サインインページのどちらかにリダイレクトされます。このエンドポイントにおけるユーザーセッションの送信先は、ユーザーがブラウザで直接操作する必要があるウェブページです。
認証エンドポイントを使用するには、ユーザープールに以下のユーザープールの詳細に関する情報を提供するパラメータを使用して、ユーザーのブラウザを /oauth2/authorize
で呼び出します。
-
サインインするアプリクライアント。
-
終了URLするコールバック。
-
ユーザーのアクセストークンでリクエストする OAuth2.0 スコープ。
-
サインインに使用するサードパーティーの IdP (任意)。
また、Amazon Cognito が受信クレームの検証に使用する state
および nonce
パラメータを提供することもできます。
GET /oauth2/authorize
/oauth2/authorize
エンドポイントは HTTPS
GET
のみをサポートします。アプリは通常、このリクエストをユーザーのブラウザで開始します。/oauth2/authorize
エンドポイントへのリクエストは、 経由でのみ行うことができますHTTPS。
認証エンドポイントの定義の詳細については、「認証エンドポイント」のOpenID Connect (OIDC) 標準http://openid.net/specs/openid-connect-core-1_0.html#ImplicitAuthorizationEndpoint
リクエストパラメータ
response_type
-
(必須) レスポンスタイプ。
code
またはtoken
を指定する必要があります。response_type
がcode
のリクエストに成功すると、認証コード付与を返します。認証コードの付与は、Amazon Cognito がリダイレクト に追加するcode
パラメータですURL。アプリは トークンエンドポイント と、アクセス、ID、更新の各トークンとコードを交換することができます。セキュリティ上のベストプラクティスとして、またユーザーに更新トークンを受け取るには、アプリで認証コード付与を使用します。response_type
がtoken
のリクエストに成功すると、暗黙的な付与を返します。暗黙的な許可は、Amazon Cognito がリダイレクト に追加する ID およびアクセストークンですURL。暗黙的な付与は、トークンと潜在的な識別情報をユーザーに公開するため、安全性が低くなります。アプリクライアントの設定で、暗黙的な付与のサポートを無効にできます。 client_id
-
(必須) アプリクライアント ID。
client_id
の値は、リクエストを行うユーザープール内のアプリクライアントの ID である必要があります。アプリクライアントは、Amazon Cognito ローカルユーザーまたは少なくとも 1 つのサードパーティー IdP によるサインインをサポートしている必要があります。 redirect_uri
-
(必須) Amazon Cognito URLがユーザーを承認した後に認証サーバーがブラウザをリダイレクトする 。
リダイレクトユニフォームリソース識別子 (URI) には、次の属性が必要です。
-
絶対 である必要がありますURI。
-
をクライアントURIに事前登録しておく必要があります。
-
フラグメントコンポーネントが含まれていない。
OAuth 「2.0 - リダイレクトエンドポイント」を参照してください
。 Amazon Cognito ではHTTPS、テストURL目的でコールバックとして設定できる を除き
http://localhost
、リダイレクトに URIを使用する必要があります。Amazon Cognito は、 URLsなどのアプリケーションコールバックもサポートしています
myapp://example
。 -
state
-
(オプション、推奨) アプリケーションがリクエストに状態パラメータを追加すると、
/oauth2/authorize
エンドポイントがユーザーをリダイレクトするときに Amazon Cognito はその値をアプリケーションに返します。この値をリクエストに追加して、CSRF
攻撃から保護します。 state
パラメータの値を URLでエンコードされたJSON文字列に設定することはできません。state
パラメータでこの形式に一致する文字列を渡すには、文字列を base64 にエンコードしてから、アプリケーションでデコードします。 identity_provider
-
(オプション) このパラメータを追加して、ホストされた UI をバイパスし、ユーザーをプロバイダーのサインインページにリダイレクトします。identity_provider パラメータの値はユーザープールに表示される ID プロバイダー (IdP) の名前です。
-
ソーシャルプロバイダーの場合、ID_provider 値
Facebook
、Google
、LoginWithAmazon
、および を使用できますSignInWithApple
。 -
Amazon Cognito ユーザープールの場合は、値 を使用します
COGNITO
。 -
SAML 2.0 および OpenID Connect (OIDC) ID プロバイダー (IdPs) の場合は、ユーザープールの IdP に割り当てた名前を使用します。
-
idp_identifier
-
(オプション) このパラメータを追加して、identity_provider 名の代替名を持つプロバイダーにリダイレクトします。Amazon Cognito コンソールのサインインエクスペリエンスタブOIDC IdPs から SAML 2.0 と の識別子を入力できます。
scope
-
(オプション) システム予約スコープまたはクライアントに関連付けられているカスタムスコープの組み合わせにすることができます。スコープはスペースで区切る必要があります。システム予約されたスコープは
openid
、email
、phone
、profile
、およびaws.cognito.signin.user.admin
です。使用されるスコープは、いずれもクライアントに関連付けられている必要があり、関連付けられていなければ、ランタイム時に無視されます。クライアントがスコープをリクエストしない場合、認証サーバーはクライアントに関連付けられているすべてのスコープを使用します。
ID トークンは
openid
スコープがリクエストされた場合にのみ返されます。Amazon Cognito ユーザープールに対してアクセストークンを使用できるのは、aws.cognito.signin.user.admin
スコープがリクエストされている場合のみです。phone
、email
、およびprofile
スコープは、openid
スコープがリクエストされた場合にのみリクエストできます。これらのスコープは ID トークン内でクレームを記述します。 code_challenge_method
-
(オプション) チャレンジの生成に使用したハッシュプロトコル。は、S256 とプレーンの 2 つのメソッドPKCERFC
を定義します。ただし、Amazon Cognito 認証サーバーは S256 のみをサポートします。 code_challenge
-
(オプション) から生成したチャレンジ
code_verifier
。code_challenge_method
パラメータを指定した場合にのみ必須です。 nonce
-
(オプション) リクエストに追加できるランダムな値。指定したノンス値は、Amazon Cognito が発行する ID トークンに含まれます。リプレイ攻撃を防ぐために、アプリは ID トークンの
nonce
クレームを検査し、生成したものと比較することができます。nonce
クレームの詳細については、「OpenID Connect standard」(OpenID Connect 標準) の「ID token validation」(ID トークンの検証) を参照してください。
肯定的なレスポンスを持つリクエストの例
次の例は、/oauth2/authorize
エンドポイントへのHTTPリクエストの形式を示しています。
認証コード付与
これは、認証コード付与のリクエスト例です。
例 – GETリクエスト
次のリクエストは、ユーザーがredirect_uri
送信先でアプリに渡す認証コードを取得するセッションを開始します。このセッションは、ユーザー属性と Amazon Cognito セルフサービスAPIオペレーションへのアクセスの範囲をリクエストします。
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? response_type=code& client_id=
1example23456789
& redirect_uri=https://www.example.com
& state=abcdefg
& scope=openid+profile+aws.cognito.signin.user.admin
例 – レスポンス
Amazon Cognito 認証サーバーは、承認コードとステートを伴ってリダイレクトしアプリに戻ります。認証コードは 5 分間有効です。
HTTP/1.1 302 Found
Location: https://www.example.com
?code=a1b2c3d4-5678-90ab-cdef-EXAMPLE11111&state=abcdefg
による認証コード付与 PKCE
これは、 を使用した認証コード付与のリクエスト例ですPKCE。
例 – GETリクエスト
次のリクエストは、前のリクエストに code_challenge
パラメータを追加します。トークンのコード交換を完了するには、/oauth2/token
エンドポイントへのリクエストに code_verifier
パラメータを含める必要があります。
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? response_type=code& client_id=
1example23456789
& redirect_uri=https://www.example.com
& state=abcdefg
& scope=aws.cognito.signin.user.admin& code_challenge_method=S256& code_challenge=a1b2c3d4...
例 - レスポンス
認証サーバーは、認証コードと状態を使用してアプリケーションにリダイレクトします。コードと状態は、フラグメントではなくクエリ文字列パラメータで返される必要があります。
HTTP/1.1 302 Found
Location: https://www.example.com
?code=a1b2c3d4-5678-90ab-cdef-EXAMPLE11111&state=abcdefg
openid
スコープを使用しないトークン付与
これは、暗黙的な許可を生成し、ユーザーのセッションJWTsに直接返すリクエストの例です。
例 – GETリクエスト
次のリクエストは、認証サーバーからの暗黙的な付与用です。Amazon Cognito からのアクセストークンは、セルフサービスAPIオペレーションを承認します。
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? response_type=token& client_id=
1example23456789
& redirect_uri=https://www.example.com
& state=abcdefg
& scope=aws.cognito.signin.user.admin
例 - レスポンス
Amazon Cognito 認証サーバーはアクセストークンを伴ってリダイレクトし、アプリに戻ります。openid
スコープがリクエストされなかったため、Amazon Cognito は ID トークンを返しません。また、Amazon Cognito はこのフローで更新トークンを返しません。Amazon Cognito は、クエリ文字列ではなくフラグメントでアクセストークンと状態を返します。
HTTP/1.1 302 Found
Location: https://YOUR_APP/redirect_uri#access_token=ACCESS_TOKEN&token_type=bearer&expires_in=3600&state=STATE
openid
スコープを使用したトークン付与
これは、暗黙的な許可を生成し、ユーザーのセッションJWTsに直接返すリクエストの例です。
例 – GETリクエスト
次のリクエストは、認証サーバーからの暗黙的な付与用です。Amazon Cognito からのアクセストークンは、ユーザー属性とセルフサービスAPIオペレーションへのアクセスを許可します。
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? response_type=token& client_id=
1example23456789
& redirect_uri=https://www.example.com
& state=abcdefg
& scope=aws.cognito.signin.user.admin+openid+profile
例 – レスポンス
認証サーバーは、アクセストークンと ID トークンを使用してアプリケーションにリダイレクトバックします (openid
スコープが含まれていたため)。
HTTP/1.1 302 Found
Location: https://www.example.com
#id_token=eyJra67890EXAMPLE&access_token=eyJra12345EXAMPLE&token_type=bearer&expires_in=3600&state=abcdefg
否定応答の例
Amazon Cognito はリクエストを拒否することがあります。負のリクエストには、HTTPエラーコードと、リクエストパラメータの修正に使用できる説明が付属しています。以下は、否定的なレスポンスの例です。
-
client_id
とredirect_uri
が有効で、リクエストパラメータが正しくフォーマットされていない場合、認証サーバーはエラーをクライアントの にリダイレクトredirect_uri
し、URLパラメータにエラーメッセージを追加します。以下は、誤ったフォーマットの例です。-
リクエストには
response_type
パラメータは含まれません。 -
認証リクエストは
code_challenge
パラメータを提供しましたが、code_challenge_method
パラメータは提供していません。 -
code_challenge_method
パラメータの値は ではありませんS256
。
以下は、誤ったフォーマットのリクエスト例に対するレスポンスです。
HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request
-
-
クライアントが
token
でcode
または をリクエストしてもresponse_type
、これらのリクエストに対するアクセス許可がない場合、Amazon Cognito 認証サーバーはredirect_uri
次のようにクライアントのunauthorized_client
に戻ります。HTTP 1.1 302 Found Location: https://client_redirect_uri?error=unauthorized_client
-
クライアントが無効、不明、または有効ではない形式のスコープをリクエストする場合は、以下にあるように、Amazon Cognito 認証サーバーが
invalid_scope
をクライアントのredirect_uri
に返します。HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_scope
-
サーバーに予期しないエラーが発生した場合、認証サーバーはクライアントの
server_error
に戻りますredirect_uri
。HTTP 500 エラーはクライアントに送信されないため、エラーはユーザーのブラウザに表示されません。認証サーバーは次のエラーを返します。HTTP 1.1 302 Found Location: https://client_redirect_uri?error=server_error
-
Amazon Cognito がサードパーティーの へのフェデレーションを通じて認証する場合 IdPs、Amazon Cognito では次のような接続の問題が発生する可能性があります。
-
IdP からトークンをリクエストしているときに接続タイムアウトが発生した場合、認証サーバーは以下のようにエラーをクライアントの
redirect_uri
にリダイレクトします。HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Timeout+occurred+in+calling+IdP+token+endpoint
-
ID トークンの検証のために
jwks_uri
エンドポイントを呼び出すときに接続タイムアウトが発生すると、認証サーバーは次のようにエラーでクライアントの にリダイレクトしますredirect_uri
。HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=error_description=Timeout+in+calling+jwks+uri
-
-
サードパーティーの にフェデレーションして認証する場合 IdPs、プロバイダーはエラーレスポンスを返すことがあります。これは、設定エラーや、次のようなその他の理由が原因である可能性があります。
-
他のプロバイダーからエラーレスポンスを受け取った場合、認証サーバーは以下のようにエラーをクライアントの
redirect_uri
にリダイレクトします。HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=[IdP name]+Error+-+[status code]+error getting token
-
Google からエラーレスポンスを受け取った場合、認証サーバーは以下のようにエラーをクライアントの
redirect_uri
にリダイレクトします。HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Google+Error+-+[status code]+[Google-provided error code]
-
-
Amazon Cognito が外部 IdP に接続するときに通信例外が発生すると、認証サーバーは、次のいずれか
redirect_uri
のメッセージを使用してエラーでクライアントの にリダイレクトします。-
HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Connection+reset
-
HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Read+timed+out
-