4.2.1 Using user pools with AWS Mobile SDK
Here are the details about registering, confirming, and authenticating users using standard AWS Mobile SDK.
Creating an AWSCognitoIdentityUserPool Object
The following procedure describes how to create an AWSCognitoIdentityUserPool object to interact with.
// Create a user pool with default ClientConfiguration
CognitoUserPool userPool = new CognitoUserPool(context, userPoolId, clientId, clientSecret, cognitoRegion);
// Create a user pool with default ClientConfiguration
val userPool = CognitoUserPool(context, userPoolId, clientId, clientSecret, cognitoRegion)
OR
// This will also work
ClientConfiguration clientConfiguration = new ClientConfiguration();
AmazonCognitoIdentityProvider cipClient = new AmazonCognitoIdentityProviderClient(new AnonymousAWSCredentials(), clientConfiguration);
cipClient.setRegion(Region.getRegion(cognitoRegion));
CognitoUserPool userPool = new CognitoUserPool(context, userPoolId, clientId, clientSecret, cipClient);
// This will also work
val clientConfiguration = ClientConfiguration()
val cipClient: AmazonCognitoIdentityProvider =
AmazonCognitoIdentityProviderClient(AnonymousAWSCredentials(), clientConfiguration)
cipClient.setRegion(Region.getRegion(cognitoRegion))
otval userPool = CognitoUserPool(context, userPoolId, clientId, clientSecret, cipClient)
Register a User
Use userPool.signUpInBackground
method to sign up a user.
SignUpHandler signupCallback = new SignUpHandler() {
@Override
public void onSuccess(CognitoUser cognitoUser, SignUpResult signUpResult) {
// Sign-up was successful
// Check if this user (cognitoUser) needs to be confirmed
if(!signUpResult.getUserConfirmed()) {
// This user must be confirmed and a confirmation code was sent to the user
// cognitoUserCodeDeliveryDetails will indicate where the confirmation code was sent
// Get the confirmation code from user
}
else {
// The user has already been confirmed
}
}
@Override
public void onFailure(Exception exception) {
// Sign-up failed, check exception for the cause
}
};
// API call
userPool.signUpInBackground(userId, password, userAttributes, null, signupCallback);
// Callback for cognito signup
val signupCallback: SignUpHandler = object : SignUpHandler {
override fun onSuccess(
cognitoUser: CognitoUser, signUpResult: SignUpResult) {
// Sign-up was successful
// Check if this user (cognitoUser) needs to be confirmed
if(!signUpResult.getUserConfirmed()) {
// This user must be confirmed and a confirmation code was sent to the user
// cognitoUserCodeDeliveryDetails will indicate where the confirmation code was sent
// Get the confirmation code from user
}
else {
// The user has already been confirmed
}
}
override fun onFailure(exception: Exception) {
// Sign-up failed, check exception for the cause
}
}
// Signup with Cognito
userPool.signUpInBackground(userId, password, userAttributes, null, signupCallback)
Confirm Signup
Confirm a user's sign up with the confirmation code using user.confirmSignUp
method
GenericHandler handler = new GenericHandler() {
@Override
public void onSuccess() {
// User was successfully confirmed!
}
@Override
public void onFailure(Exception exception) {
// Confirmation failed, probe exception for details
}
}
// API call
user.confirmSignUp(code, handler);
val handler: GenericHandler = object : GenericHandler {
@Override
public void onSuccess() {
// User was successfully confirmed!
}
@Override
public void onFailure(Exception exception) {
// Confirmation failed, probe exception for details
}
}
// API call
user.confirmSignUp(code, handler)
Sign in a User
Use cognitoUser.getSessionInBackground
method to get a session with the username and password.
// Callback handler for the sign-in process
AuthenticationHandler authenticationHandler = new AuthenticationHandler() {
@Override
public void onSuccess(CognitoUserSession cognitoUserSession, CognitoDevice device) {
// Sign-in was successful, cognitoUserSession will contain tokens for the user
}
@Override
public void getAuthenticationDetails(AuthenticationContinuation authenticationContinuation, String userId) {
// The API needs user sign-in credentials to continue
AuthenticationDetails authenticationDetails = new AuthenticationDetails(userId, password, null);
// Pass the user sign-in credentials to the continuation
authenticationContinuation.setAuthenticationDetails(authenticationDetails);
// Allow the sign-in to continue
authenticationContinuation.continueTask();
}
@Override
public void getMFACode(MultiFactorAuthenticationContinuation multiFactorAuthenticationContinuation) {
// Multi-factor authentication is required; get the verification code from user
multiFactorAuthenticationContinuation.setMfaCode(mfaVerificationCode);
// Allow the sign-in process to continue
multiFactorAuthenticationContinuation.continueTask();
}
@Override
public void authenticationChallenge(ChallengeContinuation continuation) {
}
@Override
public void onFailure(Exception exception) {
// Sign-in failed, check exception for the cause
}
};
// Sign in the user
cognitoUser.getSessionInBackground(authenticationHandler);
// AuthenticationHandler for Cognito Signin
val authenticationHandler: AuthenticationHandler = object : AuthenticationHandler {
override fun onSuccess(userSession: CognitoUserSession, device: CognitoDevice) {
// Sign-in was successful, cognitoUserSession will contain tokens for the user
}
override fun getAuthenticationDetails(
authenticationContinuation: AuthenticationContinuation, UserId: String)
{
// The API needs user sign-in credentials to continue
val authenticationDetails = AuthenticationDetails(userId, attr.password, null)
// Pass the user sign-in credentials to the continuation
authenticationContinuation.setAuthenticationDetails(authenticationDetails)
// Allow the sign-in to continue
authenticationContinuation.continueTask()
}
override fun getMFACode(multiFactorAuthenticationContinuation: MultiFactorAuthenticationContinuation) {
// Multi-factor authentication is required; get the verification code from user
multiFactorAuthenticationContinuation.setMfaCode(mfaVerificationCod)
// Allow the sign-in process to continue
multiFactorAuthenticationContinuation.continueTask()
}
override fun authenticationChallenge(continuation: ChallengeContinuation) {
}
override fun onFailure(exception: Exception) {
// Sign-in failed, check exception for the cause
}
}
// Cognito call for authentication
user.getSessionInBackground(authenticationHandler)
Sign out a user
Use cognitoUser.signOut
method to log a user out.
// This has cleared all tokens and this user will have to go through the authentication process to get tokens.
user.signOut();
user.signOut()
Previous4.2 Authenticate Using AWS Cognito Service WrapperNext4.2.2 Using user pools with Bayun AWSS3 wrapper 'SecureAuthentication'
Last updated
Was this helpful?