翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
フェデレーションユーザーを既存のユーザープロファイルにリンクする
多くの場合、同じユーザーには、ユーザープールに接続した複数の ID プロバイダー (IdPs) を持つプロファイルがあります。Amazon Cognito では、ユーザーが出現するたびにディレクトリ内の同じユーザープロファイルにリンクできます。このようにして、複数の IdP ユーザーを持つ 1 人のユーザーが、アプリで一貫したエクスペリエンスを持つことができます。AdminLinkProviderForUser は、フェデレーティッドディレクトリ内のユーザーの一意の ID をユーザープール内のユーザーとして認識するように Amazon Cognito に指示します。ユーザープール内のユーザーは、ユーザープロファイルに関連付けられたフェデレーティッド ID が 0 個以上ある場合、請求
フェデレーションユーザーが初めてユーザープールにサインインすると、Amazon Cognito はその ID にリンクされたローカルプロファイルを探します。リンクされたプロファイルが存在しない場合、ユーザープールは新しいプロファイルを作成します。ローカルプロファイルを作成し、最初のサインイン前であればいつでも、計画されたステージング前タスクまたは のいずれかで、AdminLinkProviderForUser
APIリクエストでフェデレーティッドユーザーにリンクできますサインアップ前の Lambda トリガー。ユーザーがサインインし、Amazon Cognito がリンクされたローカルプロファイルを検出すると、ユーザープールはユーザーのクレームを読み取り、IdP のマッピングルールと比較します。次に、ユーザープールは、ログイン時にマッピングされたクレームを反映して、リンクされたローカルプロファイルを更新します。このようにして、アクセスクレームでローカルプロファイルを設定し、その ID クレーム up-to-dateをプロバイダーに保持できます。Amazon Cognito により、フェデレーションユーザーとリンクされたプロファイルがマッチングされると、フェデレーションユーザーは常にそのプロファイルにサインインします。次に、ユーザーの他のプロバイダー ID を同じプロファイルにリンクして、ユーザーのアプリエクスペリエンスを一貫させることができます。以前にサインインしたフェデレーションユーザーをリンクするには、まず既存のプロファイルを削除する必要があります。既存のプロファイルは、
という形式で識別できます。例えば、[Provider
name]
_identifierLoginWithAmazon_amzn1.account.AFAEXAMPLE
と指定します。作成してサードパーティーユーザー ID にリンクしたユーザーには、作成したユーザー名と、リンクされた ID の詳細を含むidentities
属性があります。
重要
AdminLinkProviderForUser
は、外部フェデレーティッド ID を持つユーザーがユーザープール内の既存のユーザーとしてサインインできるようにするため、アプリケーション所有者によって信頼されている外部属性 IdPs とプロバイダー属性でのみ使用することが重要です。
例えば、複数の顧客と共有しているアプリを持つマネージドサービスプロバイダー (MSP) の場合です。各顧客は、Active Directory フェデレーションサービス () を介してアプリにサインインしますADFS。IT 管理者 Carlos は、各お客様のドメインにアカウントを持っています。IdP に関係なく、Carlos がサインインするたびにアプリ管理者として認識されるようにします。
Amazon Cognito に対する Carlos のSAMLアサーションのemail
クレームmsp_carlos@example.com
におけるADFS IdPs 現在の Carlos の E メールアドレス。ユーザー名 Carlos
を使用してユーザープールにユーザーを作成します。次の AWS Command Line Interface (AWS CLI) コマンドは IdPs ADFS1、、ADFS2、および から Carlos の ID をリンクしますADFS3。
注記
特定の属性クレームに基づいてユーザーをリンクできます。この機能は OIDCと に固有ですSAML IdPs。他のプロバイダータイプでは、固定ソース属性に基づいてリンクする必要があります。詳細については、「」を参照してくださいAdminLinkProviderForUser。ソーシャル IdP をユーザープロファイルにリンクするとき、ProviderAttributeName
に Cognito_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 人のフェデレーションユーザーをリンクできます。
-
AdminLinkProviderForUser
API リクエストSourceUser
のProviderAttributeName
パラメータで定義されているように、最大 5 つの IdP 属性クレームから各 IdP にユーザーをリンクできます。例えば、少なくとも 1 人のユーザーをソース属性email
、、phone
department
given_name
、、および にリンクしている場合location
、これらの 5 つの属性のいずれかで追加ユーザーのみをリンクできます。 -
フェデレーションユーザーは、既存のフェデレーションユーザープロファイルまたはローカルユーザーにリンクできます。
-
プロバイダーを のユーザープロファイルにリンクすることはできません AWS Management Console。
-
ユーザーの ID トークンには、
identities
クレームに関連するすべてのプロバイダーが含まれます。 -
AdminSetUserPassword API リクエストで自動的に作成されたフェデレーティッドユーザープロファイルのパスワードを設定できます。その後、そのユーザーのステータスは
EXTERNAL_PROVIDER
からCONFIRMED
に変わります。この状態のユーザーは、フェデレーティッドユーザーとしてサインインし、リンクされたローカルユーザーAPIのように で認証フローを開始できます。また、 ChangePassword や などのトークン認証APIリクエストでパスワードと属性を変更することもできますUpdateUserAttributes。セキュリティのベストプラクティスとして、またユーザーを外部 IdP と同期した状態を維持するため、フェデレーションユーザープロファイルにパスワードを設定しないでください。代わりに、AdminLinkProviderForUser
でユーザーをローカルプロファイルにリンクしてください。 -
Amazon Cognito は、ユーザーが IdP からサインインするときに、リンクされたローカルユーザープロファイルにユーザー属性を入力します。Amazon Cognito は、IdP から ID OIDC トークン内の ID クレームを処理し、2.0 OAuth とOIDCプロバイダーの両方の
userInfo
エンドポイントも確認します。Amazon Cognito では、ID トークン内の情報はuserInfo
からの情報よりも優先されます。
プロファイルにリンクした外部ユーザーアカウントをユーザーが使用しなくなった場合は、ユーザーアカウントとユーザープールユーザーとの関連付けを解除できます。ユーザーをリンクしたときに、ユーザーの属性名、属性値、プロバイダー名をリクエストに入力しました。ユーザーが不要になったプロファイルを削除するには、同等のパラメータを使用してAdminDisableProviderForUserAPIリクエストを行います。
のその他のコマンド構文と例AdminLinkProviderForUserについては、「」を参照してください AWS SDKs。