Spring Secutity 5 作为 AWS Cognito 用户池的 OIDC 身份提供商

Spring Secutity 5 as an OIDC Identity Provider for AWS Cognito User Pool

我有一个具有 Spring 安全性 5 的授权服务器。它支持授权代码、带有 PKCE 的授权代码、隐式授权和来自 OAuth 2.0 身份验证框架的客户端凭证流。此 Spring Security 5 Auth Server 还与包含用户信息及其密码散列的数据库相连。目前,Auth 用户使用数据库中的用户表从登录页面验证用户凭据。

现在我需要设置一个 AWS Cognito 用户池并使用已存储在数据库中的相同用户。我的意图是使用 Spring 安全验证服务器作为我在 AWS Cognito 中的用户池的 OIDC 身份提供者。

这可能吗?

AWS Cognito 可以充当授权服务器,这意味着您的应用程序将获得 AWS 令牌。在这种情况下,您将 Spring 添加为 OpenID Connect IDP,类似于我的 blog post 使用 Okta 作为 IDP。不过,这可能是一个非常有影响力的更改,因为您可能无法使 Cognito 访问令牌包含任何自定义值。

或者你可以反过来做,在这种情况下你的应用程序将收到 Spring 颁发的令牌。我希望集成基本上可以正常工作,无论您采用哪种方式,尽管您可能会遇到一些烦恼。

一个重要的因素是您的 API/后端将如何在此更改后从访问令牌中识别用户,因为 Cognito 和 Spring 将在访问令牌中使用不同的主题声明。在相关情况下,this detailed Curity article 讨论了迁移和用户 ID。