フェデレーションユーザーを既存のユーザープロファイルにリンクする - Amazon Cognito

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

フェデレーションユーザーを既存のユーザープロファイルにリンクする

多くの場合、同じユーザーには、ユーザープールに接続した複数の ID プロバイダー (IdPs) を持つプロファイルがあります。Amazon Cognito では、ユーザーが出現するたびにディレクトリ内の同じユーザープロファイルにリンクできます。このようにして、複数の IdP ユーザーを持つ 1 人のユーザーが、アプリで一貫したエクスペリエンスを持つことができます。AdminLinkProviderForUser は、フェデレーティッドディレクトリ内のユーザーの一意の ID をユーザープール内のユーザーとして認識するように Amazon Cognito に指示します。ユーザープール内のユーザーは、ユーザープロファイルに関連付けられているフェデレーション ID が 0 個以上ある場合、課金の目的で 1 人の月間アクティブユーザー (MAU) としてカウントされます。

フェデレーションユーザーが初めてユーザープールにサインインすると、Amazon Cognito はその ID にリンクされたローカルプロファイルを探します。リンクされたプロファイルが存在しない場合、ユーザープールは新しいプロファイルを作成します。ローカルプロファイルを作成し、計画された事前ステージングタスクまたは で、AdminLinkProviderForUserAPI リクエストで、最初のサインイン前であればいつでもフェデレーティッドユーザーにリンクできますサインアップ前の Lambda トリガー。ユーザーがサインインし、Amazon Cognito がリンクされたローカルプロファイルを検出すると、ユーザープールはユーザーのクレームを読み取り、IdP のマッピングルールと比較します。次に、ユーザープールは、ログイン時にマッピングされたクレームを反映して、リンクされたローカルプロファイルを更新します。このようにして、アクセスクレームでローカルプロファイルを設定し、その ID クレームをプロバイダー up-to-date に保持できます。Amazon Cognito により、フェデレーションユーザーとリンクされたプロファイルがマッチングされると、フェデレーションユーザーは常にそのプロファイルにサインインします。次に、ユーザーの他のプロバイダー ID を同じプロファイルにリンクして、ユーザーのアプリエクスペリエンスを一貫させることができます。以前にサインインしたフェデレーションユーザーをリンクするには、まず既存のプロファイルを削除する必要があります。既存のプロファイルは、[Provider name]_identifier という形式で識別できます。例えば LoginWithAmazon_amzn1.account.AFAEXAMPLE です。作成してサードパーティーのユーザー ID にリンクしたユーザーには、作成したユーザー名と、リンクされた ID の詳細を含むidentities属性があります。

重要

AdminLinkProviderForUser は、外部フェデレーティッド ID を持つユーザーがユーザープール内の既存のユーザーとしてサインインできるようにするため、アプリケーション所有者によって信頼されている外部属性 IdPs とプロバイダー属性でのみ使用することが重要です。

例えば、複数のお客様と共有するアプリを使用するマネージドサービスプロバイダー (MSP) の場合です。お客様はそれぞれ、Active Directory Federation Services (ADFS) を使用してアプリにサインインします。IT 管理者 Carlos は、各お客様のドメインにアカウントを持っています。IdP に関係なく、Carlos がサインインするたびにアプリ管理者として認識されるようにします。

ADFS IdPs は、Carlos の SAML アサーションのemailクレームmsp_carlos@example.comに Carlos の E メールアドレスを Amazon Cognito に提示します。ユーザー名 Carlos を使用してユーザープールにユーザーを作成します。次の AWS Command Line Interface (AWS CLI) コマンドは、 IdPs ADFS1, ADFS2ADFS3リンクします。

注記

特定の属性クレームに基づいてユーザーをリンクできます。この機能は OIDC と SAML に固有です IdPs。他のプロバイダータイプでは、固定ソース属性に基づいてリンクする必要があります。詳細については、「」を参照してくださいAdminLinkProviderForUser。ソーシャル IdP をユーザープロファイルにリンクするとき、ProviderAttributeNameCognito_Subject を設定する必要があります。ProviderAttributeValue は、IdP のユーザーの一意の識別子でなければなりません。

aws cognito-idp admin-link-provider-for-user \ --user-pool-id us-east-1_EXAMPLE \ --destination-user ProviderAttributeValue=Carlos,ProviderName=Cognito \ --source-user ProviderName=ADFS1,ProviderAttributeName=email,ProviderAttributeValue=msp_carlos@example.com aws cognito-idp admin-link-provider-for-user \ --user-pool-id us-east-1_EXAMPLE \ --destination-user ProviderAttributeValue=Carlos,ProviderName=Cognito \ --source-user ProviderName=ADFS2,ProviderAttributeName=email,ProviderAttributeValue=msp_carlos@example.com aws cognito-idp admin-link-provider-for-user \ --user-pool-id us-east-1_EXAMPLE \ --destination-user ProviderAttributeValue=Carlos,ProviderName=Cognito \ --source-user ProviderName=ADFS3,ProviderAttributeName=email,ProviderAttributeValue=msp_carlos@example.com

ユーザープールのユーザープロファイル Carlos は、次の identities 属性を持つようになりました。

[{ "userId": "msp_carlos@example.com", "providerName": "ADFS1", "providerType": "SAML", "issuer": "http://auth.example.com", "primary": false, "dateCreated": 111111111111111 }, { "userId": "msp_carlos@example.com", "providerName": "ADFS2", "providerType": "SAML", "issuer": "http://auth2.example.com", "primary": false, "dateCreated": 111111111111111 }, { "userId": "msp_carlos@example.com", "providerName": "ADFS3", "providerType": "SAML", "issuer": "http://auth3.example.com", "primary": false, "dateCreated": 111111111111111 }]
フェデレーションユーザーのリンクについて知っておくべきこと
  • 各ユーザープロファイルに最大 5 人のフェデレーションユーザーをリンクできます。

  • フェデレーションユーザーは、既存のフェデレーションユーザープロファイルまたはローカルユーザーにリンクできます。

  • プロバイダーを のユーザープロファイルにリンクすることはできません AWS Management Console。

  • ユーザーの ID トークンには、identities クレームに関連するすべてのプロバイダーが含まれます。

  • AdminSetUserPassword API リクエストで自動的に作成されたフェデレーティッドユーザープロファイルのパスワードを設定できます。その後、そのユーザーのステータスは EXTERNAL_PROVIDER から CONFIRMED に変わります。この状態のユーザーは、フェデレーションユーザーとしてサインインし、リンクされたローカルユーザーのように API で認証フローを開始できます。また、 や などのトークン認証された API リクエストのパスワードChangePasswordと属性を変更することもできますUpdateUserAttributes。セキュリティのベストプラクティスとして、またユーザーを外部 IdP と同期した状態を維持するため、フェデレーションユーザープロファイルにパスワードを設定しないでください。代わりに、AdminLinkProviderForUser でユーザーをローカルプロファイルにリンクしてください。

  • Amazon Cognito は、ユーザーが IdP からサインインするときに、リンクされたローカルユーザープロファイルにユーザー属性を入力します。Amazon Cognito は OIDC IdP からの ID トークン内のアイデンティティ要求を処理し、OAuth 2.0 プロバイダーと OIDC プロバイダー両方の userInfo エンドポイントもチェックします。Amazon Cognito では、ID トークン内の情報は userInfo からの情報よりも優先されます。

プロファイルにリンクした外部ユーザーアカウントをユーザーが使用しなくなった場合は、ユーザーアカウントとユーザープールユーザーとの関連付けを解除できます。ユーザーをリンクしたときに、ユーザーの属性名、属性値、プロバイダー名をリクエストに入力しました。ユーザーが不要になったプロファイルを削除するには、同等のパラメータを使用して AdminDisableProviderForUser API リクエストを行います。

SDK のその他のコマンド構文と例AdminLinkProviderForUserについては、「」を参照してください。 AWS SDKs