1

Cognito IDP 允许以下 3 个 AWS CLI 注册、确认和生成 ID 令牌:

  1. aws cognito-idp 注册 --region ap-south-1 --client-id xxx --username xx@xx.com --password xxx

  2. aws cognito-idp 确认注册 --client-id xxxx --username xxx@xx.com --confirmation-code xxx

  3. 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;
}
4

0 回答 0