サードパーティ ID プロバイダー (IdP) 経由でフェデレーションを行うユーザーを、ユーザープール内のネイティブ Amazon Cognito プロファイルにリンクさせたいです。また、ユーザープールの Amazon Cognito ユーザープロファイルからフェデレーションユーザーをリンク解除できるようにしたいです。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
外部フェデレーションユーザーをリンクする
各ネイティブユーザープロファイルには、最大 5 人のフェデレーションユーザーをリンクできます。
フェデレーションユーザーをリンクするには、次の AWS CLI コマンド admin-link-provider-for-user を実行します。
aws cognito-idp admin-link-provider-for-user \
--user-pool-id User_Pool_ID \
--destination-user ProviderAttributeValue=Username,ProviderName=Cognito \
--source-user ProviderName=Provider_Name,ProviderAttributeName=Attribute,ProviderAttributeValue=Attribute_Value
注: User_Pool_ID を Amazon Cognito ユーザープール ID に、Username をネイティブ Amazon Cognito ユーザー名に、Provider_Name をサードパーティ IdP に置き換えてください。Attribute を IdP にマッピングされたユーザー属性に、Attribute_Value をフェデレーションユーザーの属性に置き換えてください。
コマンドを正常に実行できた場合、出力には本文が空の HTTP 200 ステータスが表示されます。
注: Amazon Cognito の脅威検出は、フェデレーションサインインのプロバイダーには使用できません。Amazon Cognito のユーザーアクティビティログには、フェデレーションサインインのアクティビティは記録されません。詳細については、「フェデレーションユーザーを既存のユーザープロファイルにリンクする」を参照してください。
外部フェデレーションユーザーをリンク解除する
フェデレーションユーザーをリンク解除するには、次の admin-disable-provider-for-user コマンドを実行します。
aws cognito-idp admin-disable-provider-for-user \
--user-pool-id User_Pool_ID \
--user ProviderName=Provider_Name,ProviderAttributeName=Attribute,ProviderAttributeValue=Attribute_Value
注: User_Pool_ID を Amazon Cognito ユーザープール ID に、Provider_Name を実際の IdP に置き換えてください。Attribute をフェデレーション IdP にマッピングされたユーザー属性に、Attribute_Value をフェデレーションユーザーの属性に置き換えてください。
コマンドを正常に実行できた場合、出力には本文が空の HTTP 200 ステータスが表示されます。
リンク解除されたユーザーが、ユーザーの属性に表示されなくなったことを確認するには、admin-get-user コマンドを実行します。
フェデレーションユーザーをリンク解除した後は、ユーザーは IdP を使用して Amazon Cognito ユーザーアカウントにサインインできなくなります。
関連情報
サードパーティ ID プロバイダーでユーザープールにサインインする
マネージドログインとフェデレーションエラーの応答