Cognito IDP 允许以下 3 个 AWS CLI 注册、确认和生成 ID 令牌:
aws cognito-idp 注册 --region ap-south-1 --client-id xxx --username xx@xx.com --password xxx
aws cognito-idp 确认注册 --client-id xxxx --username xxx@xx.com --confirmation-code xxx
aws cognito-idp 启动身份验证 --auth-flow USER_PASSWORD_AUTH --client-id xx --auth-parameters USERNAME=xx,PASSWORD=xx
我可以通过 AWSCognitoIdentityProvider.signUp() 和 AWSCognitoIdentityProvider.confirmSignup() 启动第 1 步和第 2 步。但是,无论有效的信用如何,第 3 步都会失败。
下面是使用的代码:
public String initiateAuth(String username, String password) {
String idToken = null;
AWSCognitoIdentityProvider cognitoClient;
Map<String, String> authParams = new HashMap<String, String>();
authParams.put("USERNAME", username);
authParams.put("PASSWORD", password);
InitiateAuthRequest initiateAuthRequest = new InitiateAuthRequest();
initiateAuthRequest.setAuthFlow("USER_PASSWORD_AUTH");
initiateAuthRequest.setClientId(CLIENT_ID);
initiateAuthRequest.setAuthParameters(authParams);
/*
// I have tried enabling as below
initiateAuthRequest.setAuthFlow(AuthFlowType.USER_PASSWORD_AUTH);
initiateAuthRequest.addAuthParametersEntry("USERNAME", username);
initiateAuthRequest.addAuthParametersEntry("PASSWORD", password);
*/
try {
cognitoClient = getAmazonCognitoIdentityClient();
InitiateAuthResult result = cognitoClient.initiateAuth(initiateAuthRequest);
idToken = result.getAuthenticationResult().getIdToken();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
idToken = "false";
} finally {
System.out.println("AWS COgnito Status = " + idToken);
}
return idToken;
}