Spring Boot 是否可以使用访问令牌访问AWS Cognito API?

iqjalb3h  于 2023-06-29  发布在  Spring
关注(0)|答案(2)|浏览(164)

我有一个简单的应用程序,由两个模块组成- OAuth2客户端(Spring Cloud Gateway)和OAuth2资源。我使用AWS Cognito作为身份提供商。某些具有特定角色的用户应该能够创建/更新/删除其他Cognito用户。
我将使用aws-java-sdk-cognitoidp库与AWS Cognito API集成,但我需要以当前登录用户的身份进行此调用,以便能够检查用户的组和IAM角色。因为来自不同组的用户应该具有不同的权限。
我发现AWSSessionCredentialsProvider似乎适合这个任务,但没有实现。
我实现了这个提供程序来从SecurityContext获取访问令牌。当我调用API时,我得到一个错误:
请求中包含的安全令牌无效
是否可以使用用户的访问令牌作为AWSCognitoIdentityProvider的凭据?

xriantvc

xriantvc1#

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

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

这将返回您的响应,您有会话。看看有没有帮助-

tct7dpnv

tct7dpnv2#

AdminInitiateAuthResult authResult = client.adminInitiateAuth(authRequest);
AuthenticationResultType resultType = authResult.getAuthenticationResult();
vars.put("AccessToken",resultType.getAccessToken());
vars.put("RefreshToken",resultType.getRefreshToken());
vars.put("IdToken",resultType.getIdToken());

相关问题