来自java的Amazon cognito未经身份验证的流

Posted

技术标签:

【中文标题】来自java的Amazon cognito未经身份验证的流【英文标题】:Amazon cognito unauthenticated flow from java 【发布时间】:2021-09-30 14:04:40 【问题描述】:

我正在尝试从 Java 代码中获取未经授权的认知令牌。代码如下:

import com.amazonaws.services.cognitoidentity.AmazonCognitoIdentity;
import com.amazonaws.services.cognitoidentity.AmazonCognitoIdentityClientBuilder;
import com.amazonaws.services.cognitoidentity.model.GetCredentialsForIdentityRequest;
import com.amazonaws.services.cognitoidentity.model.GetIdRequest;
import com.amazonaws.services.cognitoidentity.model.GetIdResult;
import com.amazonaws.services.cognitoidentity.model.GetOpenIdTokenRequest;

public class unAuthorizedToken 
   public static void main(String args[])
     AmazonCognitoIdentity identity =  AmazonCognitoIdentityClientBuilder.standard().withRegion("us-east-1").build();
    GetIdResult getId = identity.getId(new GetIdRequest().withIdentityPoolId("us-east-1:8xxxxxx-xxxx-xxxx-bxxx-5xxxxxxxxxxx"));

  //// obtain identity id and token to return to your client
    String identityId = getId.getIdentityId();
    System.out.println("IdentityId =" + identityId);
    GetOpenIdTokenRequest req = new GetOpenIdTokenRequest().withIdentityId(identityId);
    String token = identity.getOpenIdToken(req).getToken();
    System.out.println("Token =" + token);


未经身份验证的 cognito 令牌流正在使用 javascript。但是使用Java我得到了identityId,但是在获取令牌时,它要求我在这一行使用增强流: String token = identity.getOpenIdToken(req).getToken(); 异常:线程“主”com.amazonaws.services.cognitoidentity.model.InvalidParameterException 中的异常:未启用基本(经典)流,请使用增强流。 (服务:AmazonCognitoIdentity;状态代码:400;错误代码:InvalidParameterException;请求 ID:78a20c92-c0b0-4393-b972-8fa69765d7c1;代理:null) 什么是增强流量?这是否意味着不允许从 java 进行未经身份验证的访问?请帮我调试这段代码。

还想了解 com.amazonaws.services.* 和 software.amazon.awssdk.* 库之间的区别?

【问题讨论】:

【参考方案1】:

好的。根据此链接:不需要https://docs.aws.amazon.com/cognito/latest/developerguide/authentication-flow.html tokenid。我们可以通过身份ID进行身份验证

【讨论】:

以上是关于来自java的Amazon cognito未经身份验证的流的主要内容,如果未能解决你的问题,请参考以下文章

Amazon Cognito“客户端试图写入未经授权的属性”

带有 facebook 身份验证的 Amazon cognito 身份管理

Amazon Cognito - 联合身份的 OAuth 登录

AWS Cognito forgotPassword 返回请求中止

Amazon Cognito 使用开发人员身份验证 Obj C 设置 identityId

有啥方法可以限制 IAM 用户/假定角色在 AWS cognito 中启用未经身份验证的用户身份?