【问题标题】:Is it possible to access AWS Cognito API with access token?是否可以使用访问令牌访问 AWS Cognito API?
【发布时间】:2020-07-29 19:26:06
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    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);
    

    这将在您有会话的地方返回您的响应。检查它是否有帮助-

    【讨论】:

      猜你喜欢
      • 2018-06-07
      • 1970-01-01
      • 2020-10-27
      • 2021-12-21
      • 2020-09-28
      • 2021-06-19
      • 2023-04-03
      • 2017-11-02
      • 2020-11-20
      相关资源
      最近更新 更多