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