adminLinkProviderForUser method
- required ProviderUserIdentifierType destinationUser,
- required ProviderUserIdentifierType sourceUser,
- required String userPoolId,
Links an existing user account in a user pool, or
DestinationUser, to an identity from an external IdP, or
SourceUser, based on a specified attribute name and value
from the external IdP.
This operation connects a local user profile with a user identity who
hasn't yet signed in from their third-party IdP. When the user signs in
with their IdP, they get access-control configuration from the local user
profile. Linked local users can also sign in with SDK-based API operations
like InitiateAuth after they sign in at least once through
their IdP. For more information, see Linking
federated users.
Learn more
- Signing Amazon Web Services API Requests
- Using the Amazon Cognito user pools API and user pool endpoints
May throw AliasExistsException.
May throw InternalErrorException.
May throw InvalidParameterException.
May throw LimitExceededException.
May throw NotAuthorizedException.
May throw OperationNotEnabledException.
May throw ResourceNotFoundException.
May throw TooManyRequestsException.
May throw UserNotFoundException.
Parameter destinationUser :
The existing user in the user pool that you want to assign to the external
IdP user account. This user can be a local (Username + Password) Amazon
Cognito user pools user or a federated user (for example, a SAML or
Facebook user). If the user doesn't exist, Amazon Cognito generates an
exception. Amazon Cognito returns this user when the new user (with the
linked IdP attribute) signs in.
For a native username + password user, the
ProviderAttributeValue for the DestinationUser
should be the username in the user pool. For a federated user, it should
be the provider-specific user_id.
The ProviderAttributeName of the DestinationUser
is ignored.
The ProviderName should be set to Cognito for
users in Cognito user pools.
Parameter sourceUser :
An external IdP account for a user who doesn't exist yet in the user pool.
This user must be a federated user (for example, a SAML or Facebook user),
not another native user.
If the SourceUser is using a federated social IdP, such as
Facebook, Google, or Login with Amazon, you must set the
ProviderAttributeName to Cognito_Subject. For
social IdPs, the ProviderName will be Facebook,
Google, or LoginWithAmazon, and Amazon Cognito
will automatically parse the Facebook, Google, and Login with Amazon
tokens for id, sub, and user_id,
respectively. The ProviderAttributeValue for the user must be
the same value as the id, sub, or
user_id value found in the social IdP token.
For OIDC, the ProviderAttributeName can be any mapped value
from a claim in the ID token, or that your app retrieves from the
userInfo endpoint. For SAML, the
ProviderAttributeName can be any mapped value from a claim in
the SAML assertion.
The following additional considerations apply to SourceUser
for OIDC and SAML providers.
-
You must map the claim to a user pool attribute in your IdP configuration,
and set the user pool attribute name as the value of
ProviderAttributeNamein yourAdminLinkProviderForUserrequest. For example,email. -
When you set
ProviderAttributeNametoCognito_Subject, Amazon Cognito will automatically parse the default unique identifier found in the subject from the IdP token.
Parameter userPoolId :
The ID of the user pool where you want to link a federated identity.
Implementation
Future<void> adminLinkProviderForUser({
required ProviderUserIdentifierType destinationUser,
required ProviderUserIdentifierType sourceUser,
required String userPoolId,
}) async {
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target':
'AWSCognitoIdentityProviderService.AdminLinkProviderForUser'
};
await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'DestinationUser': destinationUser,
'SourceUser': sourceUser,
'UserPoolId': userPoolId,
},
);
}