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

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

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

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

ユーザー属性マッピングの設定を開始する前に、以下の重要な詳細を確認してください。

  • フェデレーションユーザーがアプリケーションにサインインする際、マッピングは、ユーザープールが必要とする各ユーザープール属性に存在している必要があります。例えば、サインアップするためにユーザープールで email 属性が必要となる場合には、この属性を IdP から該当するものにマッピングします。

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

  • ID プロバイダー (IdP) のトークンをユーザープールのカスタム属性にマッピングできます。ソーシャルプロバイダーはアクセストークンを提示し、OIDC プロバイダーはアクセストークンと ID トークンを提示します。トークンをマッピングするには、最大長さ 2,048 文字のカスタム属性を追加し、アプリクライアントにその属性への書き込みアクセス許可を付与し、IdP からの access_token または id_token をカスタム属性にマッピングします。

  • マッピングされた各ユーザープールの属性では、値の最大長 さである 2048 文字が、Amazon Cognito が IdP から取得する値に対して十分な長さである必要があります。そうではない場合は、ユーザーがアプリケーションにサインインするときに Amazon Cognito がエラーを報告します。Amazon Cognito は、トークンの長さが 2,048 文字を超える場合、IdP トークンのカスタム属性へのマッピングをサポートしていません。

  • Amazon Cognito は、次の表に示すように、フェデレーティッド IdP が渡す特定のクレームからフェデレーティッドユーザーのプロファイルの username 属性を取得します。Amazon Cognito は、この属性値の前に IdP の名前を付加します。例えば、 ですMyOIDCIdP_[sub]。フェデレーティッドユーザーに外部ユーザーディレクトリの属性と完全に一致する属性を持たせたい場合は、その属性を などの Amazon Cognito サインイン属性にマッピングしますpreferred_username

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

    • IdP からマッピングするすべてのユーザープールのカスタム属性は、変更可能である必要があります。変更可能なカスタム属性はいつでも更新できます。対照的に、ユーザーの変更不可なカスタム属性の値を設定できるのは、ユーザープロファイルを最初に作成するときのみです。Amazon Cognito コンソールで変更可能なカスタム属性を作成するには、[Sign-up experience] (サインアップエクスペリエンス) タブの [Add custom attributes] (カスタム属性の追加) を選択時に、追加する属性の [Mutable] (変更可能) チェックボックスを有効にします。または、 CreateUserPool API オペレーションを使用してユーザープールを作成する場合は、これらの各属性の Mutableパラメータを に設定できますtrue。IdP がマッピングされた不変属性の値を送信すると、Amazon Cognito はエラーを返し、サインインは失敗します。

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

  • IdP 属性に複数の値が含まれている場合、すべての値を、Amazon Cognito は非英数字文字 (「.」、「-」、「*」、「_」文字を除く) が含まれる単一のスペースで区切られた文字列に平坦化し、URL 形式のエンコードを行います。値は、アプリでの使用前にデコードおよび解析しておく必要があります。

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

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

注記

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

ソーシャル IdP 属性マッピングを指定するには
  1. Amazon Cognito コンソールにサインインします。プロンプトが表示されたら、 AWS 認証情報を入力します。

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

  3. [Sign-in experience] (サインインエクスペリエンス) タブを選択し、[Federated sign-in] (フェデレーションサインイン) を検索します。

  4. [Add an identity provider] (ID プロバイダーの追加) を選択するか、設定した [Facebook][Google][Amazon]、もしくは [Apple] の IdP を選択します。[Attribute mapping] (属性マッピング) を検索し、 [Edit] (編集) を選択します。

    ソーシャル IdP の追加の詳細については、「ユーザープールへのソーシャル ID プロバイダーの追加」を参照してください。

  5. マッピングする必要のある各属性について、以下のステップを完了してください。

    1. [User pool attribute] (ユーザープール属性) 列から属性を選択します。これは、ユーザープール内のユーザープロファイルに割り当てられる属性です。カスタム属性は、標準属性の後にリストされます。

    2. [<provider> attribute] (<プロバイダー> 属性) 列から属性を選択します。これは、プロバイダーディレクトリから渡される属性になります。ソーシャルプロバイダーの既知の属性は、ドロップダウンリストに表示されます。

    3. IdP と Amazon Cognito の間に追加の属性をマッピングするには、[Add another attribute] (その他の属性を追加) を選択します。

  6. [変更の保存] をクリックします。

SAML プロバイダー属性マッピングを指定する
  1. Amazon Cognito コンソールにサインインします。プロンプトが表示されたら、 AWS 認証情報を入力します。

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

  3. [Sign-in experience] (サインインエクスペリエンス) タブを選択し、[Federated sign-in] (フェデレーションサインイン) を検索します。

  4. [Add an identity provider] (ID プロバイダーの追加) を選択するか、設定した SAML IdP を選択します。[Attribute mapping] (属性マッピング) を探し、[Edit] (編集) を選択します。SAML IdP の詳細については、「ユーザープールへの SAML ID プロバイダーの追加」を参照してください。

  5. マッピングする必要のある各属性について、以下のステップを完了してください。

    1. [User pool attribute] (ユーザープール属性) 列から属性を選択します。これは、ユーザープール内のユーザープロファイルに割り当てられる属性です。カスタム属性は、標準属性の後にリストされます。

    2. [SAML attribute] (SAML 属性) 列から属性を選択します。これは、プロバイダーディレクトリから渡される属性になります。

      IdP は、参考として SAML アサーションのサンプルを提供する場合があります。などの単純な名前 IdPs を使用するものもあればemail、次のような URL 形式の属性名を使用するものもあります。

      http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
    3. IdP と Amazon Cognito の間に追加の属性をマッピングするには、[Add another attribute] (その他の属性を追加) を選択します。

  6. [変更の保存] をクリックします。

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

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

プロバイダーの作成時に属性マッピングを指定する
  • 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 us-east-1_EXAMPLE \ --provider-name=SAML_provider_1 \ --provider-type SAML \ --provider-details MetadataURL=https://myidp.example.com/saml/metadata \ --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
  • AWS API: CreateIdentityProvider

既存の IdP の属性マッピングを指定するには
  • 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

特定の IdP の属性マッピングに関する情報を取得するには
  • 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