Cognito SRP 身份验证 JAVA SDK

我正在尝试使用 Cognito 对 Java 应用程序进行身份验证。我在 python 中使用了运行良好的保证库。但我现在想在java中做同样的事情。


我用我的 Python 函数对保证库进行身份验证


def SRPauthentication(organizationAdmin,

                     password,

                     pool_id,

                     client_id,

                     client):

    aws = AWSSRP(username=organizationAdmin,

                 password=password,

                 pool_id=pool_id,

                 client_id=client_id,

                 client=client)

    tokens = aws.authenticate_user()

    authorization_token= tokens['AuthenticationResult']['IdToken']

    return authorization_token 

有了这个,我可以轻松访问一些安全的 API。现在我想用 Java 做同样的事情,但我有问题。


到目前为止,这是我的解决方案是这种方法:


  public static void GetCreds()

      {


          AWSCognitoIdentityProvider identityProvider = AWSCognitoIdentityProviderClientBuilder.defaultClient();

          AdminInitiateAuthRequest adminInitiateAuthRequest = new AdminInitiateAuthRequest().

                  withAuthFlow(AuthFlowType.USER_SRP_AUTH).

                  withClientId("234234234234").withUserPoolId("eu-central-1_sdfsdfdsf")

                  .addAuthParametersEntry("USERNAME", "UserK").

                   addAuthParametersEntry("PASSWORD","#######);

      }

当我运行它时,我得到一个异常:


Exception in thread "main" `com.amazonaws.services.cognitoidp.model.AWSCognitoIdentityProviderException: User: arn:aws:iam::XXXXXXXXXXXXXXXXX:user/khan is not authorized to perform: cognito-idp:AdminInitiateAuth on resource: arn:aws:cognito-idp:eu-central-1:XXXXXXXX:userpool/eu-central-1_XXXXXXX with an explicit deny (Service: AWSCognitoIdentityProvider; Status Code: 400; Error Code: AccessDeniedException; Request ID: 21be0b8e-adec-11e8-ad45-234234234)`

它说我无权执行此类指令。所以我想我在做一些普遍错误的事情。因为它与我的 python 代码一起工作,并且在 Java 中它可以从凭据中识别我的用户名。Cognito 调用实际上应该独立于我的 aws 凭据/用户帐户,对吗?


如何使用 Java 对 Cognito 进行身份验证以获取令牌以访问安全的 aws 服务?


慕的地6264312
浏览 331回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java