ユーザープールの ID プロバイダー属性マッピングを指定する - Amazon Cognito

ユーザープールの ID プロバイダー属性マッピングを指定する

AWS Management Console、AWS CLI または API を使用して、ユーザープールの ID プロバイダーの属性マッピングを指定します。

マッピングについて知っておくべきこと

マッピングを使用する前に、以下の重要な詳細事項を確認してください。

  • マッピングは、ユーザーがアプリケーションにサインインしたときに必須となる各ユーザープール属性に存在している必要があります。例えば、サインインするためにユーザープールで E メール属性が必要となる場合には、この属性を ID プロバイダーから該当するものにマッピングします。

  • デフォルトで、マップされた E メールアドレスは未検証です。ワンタイムコードを使用してマップされた E メールアドレスを検証することはできません。その代わりに ID プロバイダーからの属性をマップして、検証ステータスを取得します。例えば、Google とほとんどの OIDC プロバイダーには email_verified 属性が含まれています。

  • マップされたそれぞれのユーザープール属性では、値の最大長 (2048 文字) が、Amazon Cognito が ID プロバイダーから取得する値に十分な大きさである必要があります。そうではない場合は、ユーザーがアプリケーションにサインインするときに Amazon Cognito がエラーをスローします。カスタム属性を ID プロバイダートークンにマッピングする場合は、長さを 2048 文字に設定します。

  • username ユーザープール属性は、以下の ID プロバイダーの特定の属性のみにマップされる必要があります。

    ID プロバイダー username にマップする属性
    Facebook id
    Google sub
    Login with Amazon user_id
    OpenID Connect (OIDC) プロバイダー sub
    Apple でのサインイン sub
  • Amazon Cognito は、ユーザーがアプリケーションにサインインするときにマップされたユーザープール属性を更新できる必要があります。ユーザーが ID プロバイダー経由でサインインすると、Amazon Cognito は ID プロバイダーからの最新情報でマップされた属性を更新します。Amazon Cognito は、マップされた属性の現行の値が最新情報とすでに一致している場合でも、各属性を更新します。Amazon Cognito が属性を更新できない場合、エラーがスローされます。Amazon Cognito が属性を更新できることを確実にするため、以下の要件をチェックしてください。

    • マップされたユーザープール属性は、ミュータブルである必要があります。変更可能な属性は、この属性に書き込む権限があるアプリクライアントによって更新されることができます。ユーザープール属性は、Amazon Cognito コンソールでそれらを定義するときにミュータブルとして設定できます。または、CreateUserPool API オペレーションを使用してユーザープールを作成した場合、これらの各属性の Mutable パラメータを true に設定できます。

    • アプリケーションのアプリクライアントの設定では、マッピングされた属性を書き込み可能にする必要があります。書き込み可能な属性は、Amazon Cognito コンソールの [App clients] (アプリクライアント) ページで設定できます。また、CreateUserPoolClient API を使用してアプリクライアントを作成する場合、これらの属性を WriteAttributes 配列に追加できます。

  • ID プロバイダー属性に複数の値が含まれている場合、Amazon Cognito は非英数字文字 (「.」、「-」、「*」、「_」文字を除く) が含まれる値を URL 形式でエンコードします。値は、アプリケーションでの使用前にデコードしておく必要があります。

ユーザープールの ID プロバイダー属性マッピングを指定する (AWS Management Console)

AWS Management Consoleを使用してユーザープールの ID プロバイダーの属性マッピングを指定できます。

注記

Amazon Cognito は、着信トークンに着信クレームが存在する場合に限り、そのクレームをユーザープール属性にマップします。以前にマッピングされたクレームが着信トークンに存在しなくなった場合、そのクレームは削除または変更されません。削除されたクレームのマッピングがアプリケーションで必要な場合は、事前認証 Lambda トリガーを使用して認証中にカスタム属性を削除し、それらの属性を着信トークンから再入力できます。

ソーシャル ID プロバイダー属性マッピングを指定する

  1. Amazon Cognito コンソールにサインインします。

  2. ナビゲーションペインで [Manage your User Pools] (ユーザープールの管理) を選択してから、編集するユーザープールを選択します。

  3. [属性マッピング] タブを選択します。

  4. [Facebook]、[Google]、[Amazon]、または [Apple] タブを選択します。

  5. マッピングする必要のある各属性について、以下のステップを実行します。

    1. [キャプチャ] チェックボックスをオンにします。

    2. [User pool attribute] (ユーザープール属性) ドロップダウンリストから、ソーシャル ID プロバイダー属性にマップするユーザープール属性を選択します。

    3. さらに多くの属性が必要な場合は、[Add Facebook attribute] (Facebook 属性の追加) (または [Add Google attribute] (Google 属性の追加)、[Add Amazon attribute] (Amazon 属性の追加)、[Add Apple attribute] (Apple 属性の追加)) を選択して、以下のステップを実行します。

      1. [Facebook attribute] (Facebook 属性) (または [Google attribute] (Google 属性)、[Amazon attribute] (Amazon 属性)、[Apple attribute] (Apple 属性)) フィールドに、マップする属性の名前を入力します。

      2. [User pool attribute] (ユーザープール属性) フィールドで、ドロップダウンリストから、ソーシャル ID プロバイダー属性をマップするユーザープール属性を選択します。

    4. [Save changes] (変更を保存) をクリックします。

SAML プロバイダー属性マッピングを指定する

  1. Amazon Cognito コンソールにサインインします。

  2. ナビゲーションペインで [Manage your User Pools] (ユーザープールの管理) を選択してから、編集するユーザープールを選択します。

  3. [属性マッピング] タブを選択します。

  4. [SAML] タブを選択します。

  5. 値をキャプチャするすべての属性の [キャプチャ] ボックスにチェックを入れます。属性の [キャプチャ] ボックスのチェックを外して変更を保存すると、属性のマッピングは削除されます。

  6. ドロップダウンリストから ID プロバイダーを選択します。

  7. マッピングする必要のある各属性について、以下のステップを実行します。

    1. [SAML 属性の追加] を選択します。

    2. [SAML 属性] フィールドに、マッピングする SAML 属性の名前を入力します。

    3. [ユーザープール属性] フィールドで、ドロップダウンリストから、SAML 属性をマッピングするユーザープール属性を選択します。

  8. [Save changes] (変更を保存) をクリックします。

ユーザープールの ID プロバイダー属性マッピングを指定する (AWS CLI および AWS API)

以下のコマンドを使用して、ユーザープールの ID プロバイダー属性マッピングを指定します。

プロバイダーの作成時に属性マッピングを指定する

  • AWS CLI: aws cognito-idp create-identity-provider

    メタデータファイルの例: aws cognito-idp create-identity-provider --user-pool-id <user_pool_id> --provider-name=SAML_provider_1 --provider-type SAML --provider-details file:///details.json --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

    ここでは details.json に以下が含まれます。

    { "MetadataFile": "<SAML metadata XML>" }
    注記

    <SAML メタデータ XML> に引用符が (") 含まれる場合は、エスケープ (\") する必要があります。

    メタデータ URL の例: aws cognito-idp create-identity-provider --user-pool-id <user_pool_id> --provider-name=SAML_provider_1 --provider-type SAML --provider-details MetadataURL=<metadata_url> --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

  • AWS API: CreateIdentityProvider

既存の ID プロバイダーの属性マッピングを指定する

  • AWS CLI: aws cognito-idp update-identity-provider

    例: aws cognito-idp update-identity-provider --user-pool-id <user_pool_id> --provider-name <provider_name> --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

  • AWS API: UpdateIdentityProvider

特定の ID プロバイダーの属性マッピングに関する情報を取得する

  • AWS CLI: aws cognito-idp describe-identity-provider

    例: aws cognito-idp describe-identity-provider --user-pool-id <user_pool_id> --provider-name <provider_name>

  • AWS API: DescribeIdentityProvider