可以使用访问令牌访问AWS Cognito API吗?

时间:2020-04-16 14:04:23

标签: amazon-web-services spring-boot spring-security aws-sdk amazon-cognito

我有一个包含两个模块的简单应用程序-OAuth2客户端(Spring Cloud Gateway)和OAuth2资源。我使用AWS Cognito作为身份提供者。某些具有特定角色的用户应该能够创建/更新/删除其他Cognito用户。

我将使用aws-java-sdk-cognitoidp库与AWS Cognito API集成,但是我需要以当前登录用户身份进行此调用,以便能够检查用户的组和IAM角色。因为来自不同组的用户应具有不同的特权。

我发现AWSSessionCredentialsProvider似乎适合此任务,但没有实现。

我实现了此提供程序,以从SecurityContext获取访问令牌。调用API时出现错误:

请求中包含的安全令牌无效

是否可以使用用户的访问令牌作为AWSCognitoIdentityProvider的凭据?

1 个答案:

答案 0 :(得分:0)

我曾经有应用程序使用给定用户的凭据登录-

AWSCognitoIdentityProvider cognitoIdentityProvider = AWSCognitoIdentityProviderClientBuilder
                .standard()
                .withCredentials(new AWSStaticCredentialsProvider(getSDKCredentials()))
                .withRegion(Regions.fromName(getAwsRegion()))
                .build();

    Map<String,String> params =new HashMap<>();
        params.put("USERNAME", userName);
        params.put("PASSWORD", passCode);

    AdminInitiateAuthRequest initialRequest=new AdminInitiateAuthRequest()
            .withAuthFlow(AuthFlowType.ADMIN_NO_SRP_AUTH)
            .withAuthParameters(params)
            .withClientId(getClientId())
            .withUserPoolId(getUserPoolId());

    AdminInitiateAuthResult response = cognitoIdentityProvider.adminInitiateAuth(initialRequest);

这将返回您在会话中的答复。检查是否有帮助-