フェデレーションユーザーを既存のユーザープロファイルにリンクする - 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 フェデレーションサービス () を介してアプリにサインインします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 をユーザープロファイルにリンクするとき、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 人のフェデレーションユーザーをリンクできます。

  • AdminLinkProviderForUser API リクエストSourceUserProviderAttributeNameパラメータで定義されているように、最大 5 つの IdP 属性クレームから各 IdP にユーザーをリンクできます。例えば、少なくとも 1 人のユーザーをソース属性 email、、phonedepartmentgiven_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。