ユーザープールのアプリケーションクライアントの設定
ユーザープールを作成した後は、ユーザーのサインアップとサインインに組み込みウェブページを使用するようにアプリクライアントを設定できます。用語については、「アプリクライアントの設定用語」を参照してください。
AWS CLI を使用してユーザープールのアプリクライアントの更新、作成、説明、および削除を行うことができます。
以下の例では、[MyUserPoolID
] と [MyAppClientID
] を実際のユーザープールおよびアプリケーションクライアント ID の値に置き換えてください。同様に、以下の例で使用されているパラメータ値も実際とは異なる場合があります。
コールバック URL とログアウト URL は、JSON 形式を使用することで、CLI でリモートパラメータファイルとして処理されないようにします。
--callback-urls
"["
https://example.com
"]"
--logout-urls
"["
https://example.com
"]"
ユーザープールのアプリケーションクライアントの更新 (AWS CLI と AWS API)
AWS CLI で、次のコマンドを入力します。
aws cognito-idp update-user-pool-client --user-pool-id "
MyUserPoolID
" --client-id "MyAppClientID
" --allowed-o-auth-flows-user-pool-client --allowed-o-auth-flows "code" "implicit" --allowed-o-auth-scopes "openid" --callback-urls "["https://example.com
"]" --supported-identity-providers "["MySAMLIdP", "LoginWithAmazon"]"
コマンドが成功すると、AWS CLI から確認情報が返されます。
{ "UserPoolClient": { "ClientId": "
MyClientID
", "SupportedIdentityProviders": [ "LoginWithAmazon", "MySAMLIdP" ], "CallbackURLs": [ "https://example.com
" ], "AllowedOAuthScopes": [ "openid" ], "ClientName": "Example", "AllowedOAuthFlows": [ "implicit", "code" ], "RefreshTokenValidity": 30, "AuthSessionValidity": 3, "CreationDate": 1524628110.29, "AllowedOAuthFlowsUserPoolClient": true, "UserPoolId": "MyUserPoolID
", "LastModifiedDate": 1530055177.553 } }
詳細については、AWS CLI コマンドリファレンスで「update-user-pool-client」を参照してください。
AWS API: UpdateUserPoolClient
ユーザープールのアプリケーションクライアントの作成 (AWS CLI と AWS API)
aws cognito-idp create-user-pool-client --user-pool-id
MyUserPoolID
--client-namemyApp
詳細については、AWS CLI コマンドリファレンスで「create-user-pool-client」を参照してください。
AWS API: CreateUserPoolClient
ユーザープールのアプリケーションクライアント情報の取得 (AWS CLI と AWS API)
aws cognito-idp describe-user-pool-client --user-pool-id
MyUserPoolID
--client-idMyClientID
詳細については、AWS CLI コマンドリファレンスで「describe-user-pool-client」を参照してください。
AWS API: DescribeUserPoolClient
ユーザープールのアプリケーションクライアント情報の一覧表示 (AWS CLI と AWS API)
aws cognito-idp list-user-pool-clients --user-pool-id "
MyUserPoolID
" --max-results 3
詳細については、AWS CLI コマンドリファレンスで「list-user-pool-clients」を参照してください。
AWS API: ListUserPoolClients
ユーザープールのアプリケーションクライアントの削除 (AWS CLI と AWS API)
aws cognito-idp delete-user-pool-client --user-pool-id "
MyUserPoolID
" --client-id "MyAppClientID
"
詳細については、AWS CLI コマンドリファレンスで「delete-user-pool-client」を参照してください。
AWS API: DeleteUserPoolClient
アプリケーションクライアントの設定用語
以下の用語と定義は、アプリクライアントを設定するうえで役立ちます。
- 有効な ID プロバイダー
-
ID プロバイダー (IdP) を選択してユーザーを認証できます。このサービスは、ユーザープールで実行するか、Facebook などのサードパーティーを通じて実行できます。IdP は、使用する前に有効にする必要があります。IdP は、少なくとも 1 つを有効にする必要があり、複数を有効にすることができます。外部 IdP の使用の詳細については、「サードパーティー経由のユーザープールへのサインインの追加」を参照してください。
- コールバック URL
-
コールバック URL は、ユーザーがサインインに成功したときにリダイレクトされる先を指定します。少なくとも 1 つのコールバック URL を選択してください。コールバック URL は、以下が必要です。
-
絶対 URI である。
-
クライアントに事前登録されている。
-
フラグメントコンポーネントを含まない。
「OAuth 2.0 - リダイレクトエンドポイント
」を参照してください。 Amazon Cognito は、テスト目的限定の
HTTPS
を除き、HTTP
ではなくhttp://localhost
を使用します。また、アプリのコールバック URL (例:
myapp://example
) もサポートされています。 -
- サインアウト URL
-
サインアウト URL は、ユーザーがサインアウトしたときにリダイレクトされる先を指定します。
- 許可されている OAuth フロー
-
[Authorization code grant (認証コードの付与)] フローはコード付与フローを開始し、レスポンスとして認証コードを提供します。このコードは「トークンエンドポイント」を使用してアクセストークンと交換できます。トークンはエンドユーザーに直接公開されないため、侵害される可能性は低くなります。ただし、ユーザープールトークンの認証コードを交換するために、バックエンドでカスタムアプリケーションが必要です。
注記 セキュリティ上の理由から、モバイルアプリでは [Authorization code grant (認証コードの付与)] フローは PKCE
を使用してのみ使用することを強くお勧めします。 [暗黙の付与] フローでは、クライアントがアクセストークン (およびスコープに基づいて、オプションで ID トークン) を 認可エンドポイント から直接取得することを許可します。このフローは、アプリケーションが [Authorization code grant] (認証コードの付与) フローを開始できない場合にのみ選択します。詳細については、「OAuth 2.0 の仕様
」を参照してください。 [Authorization code grant (認証コードの付与)] と [Implicit code grant (暗黙的コードの付与)] の両方を有効にして、必要に応じて各権限を使用することができます。
[Client credentials (クライアント認証情報)] フローはマシン間の通信に使用されます。各自のリソースにアクセスするためのアクセストークンをリクエストできます。このフローは、ユーザーの代わりではなく、アプリケーションがそれ自体のためにトークンをリクエストする場合に選択します。
注記 クライアント認証情報フローはユーザーに代わって使用されることがないため、このフローではカスタムスコープのみを使用できます。カスタムスコープは、各自のリソースサーバー用に定義したものです。「ユーザープールのリソースサーバーを定義する」を参照してください。
- 許可されている OAuth スコープ
-
次の
OAuth
スコープを 1 つ以上選択し、アクセストークン用にリクエストできるアクセス権限を指定します。-
phone
スコープはphone_number
クレームおよびphone_number_verified
クレームへのアクセスを付与します。このスコープはopenid
スコープを使用する場合にのみリクエストできます。 -
email
スコープはemail
クレームおよびemail_verified
クレームへのアクセスを付与します。このスコープはopenid
スコープを使用する場合にのみリクエストできます。 -
openid
スコープはクライアントが読み取り可能な ID トークン内のすべてのユーザー属性を返します。openid
スコープがクライアントによってリクエストされない場合は、ID トークンは返されません。 -
aws.cognito.signin.user.admin
スコープは、UpdateUserAttributes および VerifyUserAttribute などのアクセストークンを必要とする Amazon Cognito ユーザープール API 操作へのアクセス権を付与します。 -
profile
スコープはクライアントが読み取り可能なすべてのユーザー属性へのアクセスを付与します。このスコープはopenid
スコープを使用する場合にのみリクエストできます。
-
- 許可されているカスタムスコープ
-
カスタムスコープは、[リソースサーバー] で各自のリソースサーバー用に定義したものです。形式は
resource-server-identifier
/scope
です。「ユーザープールのリソースサーバーを定義する」を参照してください。
OAuth スコープについての詳細は、標準 OIDC スコープ