getTokensFromRefreshToken method
Given a refresh token, issues new ID, access, and optionally refresh tokens for the user who owns the submitted token. This operation issues a new refresh token and invalidates the original refresh token after an optional grace period when refresh token rotation is enabled. If refresh token rotation is disabled, issues new ID and access tokens only.
May throw ForbiddenException.
May throw InternalErrorException.
May throw InvalidLambdaResponseException.
May throw InvalidParameterException.
May throw NotAuthorizedException.
May throw OperationNotEnabledException.
May throw RefreshTokenReuseException.
May throw ResourceNotFoundException.
May throw TooManyRequestsException.
May throw UnexpectedLambdaException.
May throw UserLambdaValidationException.
May throw UserNotFoundException.
Parameter clientId :
The app client that issued the refresh token to the user who wants to
request new tokens.
Parameter refreshToken :
A valid refresh token that can authorize the request for new tokens. When
refresh token rotation is active in the requested app client, this token
is invalidated after the request is complete and after an optional grace
period.
Parameter clientMetadata :
A map of custom key-value pairs that you can provide as input for any
custom workflows that this action triggers. You create custom workflows by
assigning Lambda functions to user pool triggers.
When Amazon Cognito invokes any of these functions, it passes a JSON
payload, which the function receives as input. This payload contains a
clientMetadata attribute that provides the data that you
assigned to the ClientMetadata parameter in your request. In your function
code, you can process the clientMetadata value to enhance
your workflow for your specific needs.
To review the Lambda trigger types that Amazon Cognito invokes at runtime with API requests, see Connecting API actions to Lambda triggers in the Amazon Cognito Developer Guide.
-
Store the
ClientMetadatavalue. This data is available only to Lambda triggers that are assigned to a user pool to support custom workflows. If your user pool configuration doesn't include triggers, theClientMetadataparameter serves no purpose. -
Validate the
ClientMetadatavalue. -
Encrypt the
ClientMetadatavalue. Don't send sensitive information in this parameter.
Parameter clientSecret :
The client secret of the requested app client, if the client has a secret.
Parameter deviceKey :
When you enable device remembering, Amazon Cognito issues a device key
that you can use for device authentication that bypasses multi-factor
authentication (MFA). To implement GetTokensFromRefreshToken
in a user pool with device remembering, you must capture the device key
from the initial authentication request. If your application doesn't
provide the key of a registered device, Amazon Cognito issues a new one.
You must provide the confirmed device key in this request if device
remembering is enabled in your user pool.
For more information about device remembering, see Working with devices.
Implementation
Future<GetTokensFromRefreshTokenResponse> getTokensFromRefreshToken({
required String clientId,
required String refreshToken,
Map<String, String>? clientMetadata,
String? clientSecret,
String? deviceKey,
}) async {
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target':
'AWSCognitoIdentityProviderService.GetTokensFromRefreshToken'
};
final jsonResponse = await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
signed: false,
// TODO queryParams
headers: headers,
payload: {
'ClientId': clientId,
'RefreshToken': refreshToken,
if (clientMetadata != null) 'ClientMetadata': clientMetadata,
if (clientSecret != null) 'ClientSecret': clientSecret,
if (deviceKey != null) 'DeviceKey': deviceKey,
},
);
return GetTokensFromRefreshTokenResponse.fromJson(jsonResponse.body);
}