Amazon Cognito の外部IdP連携で自動作成されるユーザをあらかじめ作成する方法を教えてください
困っていた内容
Amazon Cognito のユーザプールで、外部IdP連携によるサインインを設定しています。ユーザは外部IdPでサインインしたタイミングで作成されますが、事前に作成して権限付与をしておきたいです。
Cognito コンソールのユーザ作成では、identities
プロパティが設定できず、外部IdPで作成されるのと同じユーザは作成できないようでした。どうしたら良いでしょうか。
管理者としてのユーザーアカウントの作成 - Amazon Cognito
どう対応すればいいの?
ユーザを作成後、AWS CLI のadmin-link-provider-for-user
を実行してください。
admin-link-provider-for-user — AWS CLI 2.7.3 Command Reference
Links an existing user account in a user pool (DestinationUser ) to an identity from an external IdP (SourceUser ) based on a specified attribute name and value from the external IdP. This allows you to create a link from the existing user account to an external federated user identity that has not yet been used to sign in.
外部IdPでサインインしたユーザは、identities
プロパティに外部IdPの情報が付与された状態で自動作成されますが、このプロパティはユーザ作成時に設定できません。
そのため、一度identities
プロパティがない状態のユーザを作成し、その後、作成したユーザと外部IdPのユーザをリンクさせる必要があります。リンクによって自動的にidentities
プロパティが設定され、サインイン時に自動作成されるユーザをあらかじめ作成できます。
現時点でCognito コンソールからリンクはできないため、AWS CLI のadmin-link-provider-for-user
をお使いください。
$ aws cognito-idp admin-link-provider-for-user --user-pool-id hato-userpool --destination-user ProviderName='Cognito',ProviderAttributeName='userId',ProviderAttributeValue='【ユーザプールのユーザID】' --source-user ProviderName='AzureActiveDirectoryforCognito',ProviderAttributeName='username',ProviderAttributeValue='【Azure ADのユーザ名】'