繁体   English   中英

带有 Spring Boot 的 AWS Cognito 用户池服务器端流程

[英]AWS cognito user pool server side flow with spring boot

我想用 Spring Boot 实现 AWS Cognito 服务器端流程。 我不太明白流程应该是什么。 我应该同时使用 spring oauth 吗?

要求是这样的。 作为管理员创建用户并授予这些创建用户的访问权限以从 API Gateway 使用我的 API(让我们忽略 API Gateway 部分,假设我们现在只需要来自 cognito 的访问令牌)

如果我将 AWS cognito 与 spring oauth2 一起使用,我认为应该会发生以下情况

用户点击localhost:8000/oauth/token - 使用基本身份验证(用户名和密码),它将使用用户凭据进行 API 调用。 用户收到令牌并使用它,但他/她需要它。

  1. 这个流程安全吗? 我应该一起使用 spring oauth 吗?
  2. 如何处理respond to auth challenge 用户在调用我的应用程序 API 时是否应该第一次传递新密码?
@RestController
public class Oauth {


    @PostMapping(path = "/oauth/token")
    public AdminInitiateAuthResult token(@RequestHeader("username") String username, @RequestHeader("password") String password) {

        AWSCognitoIdentityProvider provider = AWSCognitoIdentityProviderClientBuilder
                .standard()
                .withRegion(Regions.US_WEST_2)
                .withCredentials(new AWSStaticCredentialsProvider()).build();


        Map<String, String> authParams = new HashMap<>();

        authParams.put("USERNAME", username);
        authParams.put("PASSWORD", password);

        AdminInitiateAuthRequest adminInitiateAuthRequest = new AdminInitiateAuthRequest()
                .withClientId("{client-id}")
                .withUserPoolId("{user-pool-id}")
                .withAuthFlow(AuthFlowType.ADMIN_USER_PASSWORD_AUTH)
                .withAuthParameters(authParams);

        AdminInitiateAuthResult authResult = provider.adminInitiateAuth(adminInitiateAuthRequest);
        return authResult.getAuthenticationResult().getIdToken();
    }

}

业务需求非常简单,需要有一个用户池(在本例中为 cognito),他们可以获得某种令牌来访问少数 API。 我想使用 spring boot 来实现这一点,因为 API 是使用 spring boot 编写的,而且我还使用了 AWS Api Gateway

我应该同时使用 spring oauth 吗?

否。授权由 API Gateway 完成。
API 客户端在使用 API 之前需要从 Cognito 获取令牌(即在那里验证自己)。 无需在应用程序(Spring)端做任何事情。
详细信息在这里

如果您想使用 Cognito 为 API 客户端实现身份验证,请参阅 Cognito 文档以获取示例和手册。
仅供参考Application Load Balancer可用于处理 API 的所有身份验证流程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM