Amazon Cognito
開発者ガイド

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

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

要件

ユーザープール属性を ID プール属性にマッピングするときは、以下の要件に注意してください。

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

  • マッピングされた各ユーザープールの属性値において、値の最大長 (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
  • Amazon Cognito には、ユーザーがアプリケーションにサインインしたときにマッピングされたユーザープール属性を更新できることが必要です。ユーザーが ID プロバイダーを介してサインインすると、Amazon Cognito は ID プロバイダーの最新の情報を使用してマッピングされた属性を更新します。Amazon Cognito は属性の現行値がすでに最新の情報と一致している場合でも、マッピングされた各属性を更新します。Amazon Cognito が属性を更新できない場合、エラーがスローされます。Amazon Cognito が属性を更新できるようにするには、次の要件を確認します。

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

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

ユーザープールの ID プロバイダー属性マッピングを指定する (AWS マネジメントコンソール)

AWS マネジメントコンソールを使用してユーザープールの ID プロバイダーの属性マッピングを指定できます。

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

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

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

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

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

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

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

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

    3. 属性を追加する必要がある場合は、[Facebook 属性の追加] (または [Google 属性の追加] や [Add Amazon attribute (Amazon 属性の追加)]) を選択して、次のステップを実行します。

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

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

    4. [Save changes] を選択します。

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

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

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

  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