use of com.amazonaws.mobileconnectors.cognitoidentityprovider.continuations.VerifyMfaContinuation in project aws-sdk-android by aws-amplify.
the class CognitoUser method associateSoftwareToken.
/**
* Registers an MFA based on Time-based One-time Password, run on current thread.
* @param sessionToken Optional: If a session token has to be used to register the MFA.
* @param callback Required: Callback handler {@link VerifyMfaContinuation}.
*/
public void associateSoftwareToken(final String sessionToken, final RegisterMfaHandler callback) {
if (callback == null) {
throw new CognitoParameterInvalidException("callback is null");
}
final CognitoUser user = this;
boolean useSessionToken;
try {
final CognitoUserSession cognitoTokens = user.getCachedSession();
AssociateSoftwareTokenResult result;
if (!StringUtils.isBlank(sessionToken)) {
result = associateTotpMfaInternalWithSession(sessionToken);
useSessionToken = true;
} else {
result = associateTotpMfaInternalWithTokens(cognitoTokens);
useSessionToken = false;
}
final String nextSessionToken = result.getSession();
final Map<String, String> parameters = new HashMap<String, String>();
parameters.put("type", CognitoServiceConstants.CHLG_TYPE_SOFTWARE_TOKEN_MFA);
parameters.put("secretKey", result.getSecretCode());
callback.onVerify(new VerifyMfaContinuation(context, clientId, user, callback, parameters, useSessionToken, nextSessionToken, VerifyMfaContinuation.RUN_IN_CURRENT));
} catch (Exception e) {
callback.onFailure(e);
}
}
use of com.amazonaws.mobileconnectors.cognitoidentityprovider.continuations.VerifyMfaContinuation in project aws-sdk-android by aws-amplify.
the class CognitoUser method associateSoftwareTokenInBackground.
/**
* Registers an MFA based on Time-based One-time Password.
* @param sessionToken Optional: If a session token has to be used to register the MFA.
* @param callback Required: Callback handler {@link VerifyMfaContinuation}.
*/
public void associateSoftwareTokenInBackground(final String sessionToken, final RegisterMfaHandler callback) {
if (callback == null) {
throw new CognitoParameterInvalidException("callback is null");
}
final CognitoUser user = this;
new Thread(new Runnable() {
@Override
public void run() {
final Handler handler = new Handler(context.getMainLooper());
Runnable returnCallback;
boolean useSessionToken;
try {
final CognitoUserSession cognitoTokens = user.getCachedSession();
AssociateSoftwareTokenResult result;
if (!StringUtils.isBlank(sessionToken)) {
result = associateTotpMfaInternalWithSession(sessionToken);
useSessionToken = true;
} else {
result = associateTotpMfaInternalWithTokens(cognitoTokens);
useSessionToken = false;
}
final String nextSessionToken = result.getSession();
final Map<String, String> parameters = new HashMap<String, String>();
parameters.put("type", CognitoServiceConstants.CHLG_TYPE_SOFTWARE_TOKEN_MFA);
parameters.put("secretKey", result.getSecretCode());
if (useSessionToken) {
returnCallback = new Runnable() {
@Override
public void run() {
callback.onVerify(new VerifyMfaContinuation(context, clientId, user, callback, parameters, true, nextSessionToken, VerifyMfaContinuation.RUN_IN_BACKGROUND));
}
};
} else {
returnCallback = new Runnable() {
@Override
public void run() {
callback.onVerify(new VerifyMfaContinuation(context, clientId, user, callback, parameters, false, nextSessionToken, VerifyMfaContinuation.RUN_IN_BACKGROUND));
}
};
}
} catch (final Exception e) {
returnCallback = new Runnable() {
@Override
public void run() {
callback.onFailure(e);
}
};
}
handler.post(returnCallback);
}
}).start();
}
Aggregations