我正在尝试使用 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 服务?
添加回答
举报
0/150
提交
取消