我可以将 AWS 用户池用作 Spring 应用程序中的目录服务吗?
Posted
技术标签:
【中文标题】我可以将 AWS 用户池用作 Spring 应用程序中的目录服务吗?【英文标题】:Can I use AWS User Pools as a directory service from a Spring app? 【发布时间】:2017-02-06 02:05:57 【问题描述】:是否可以将 AWS Cognito 用户池用作在 EC2 中运行的 Spring Boot 应用程序的身份验证和授权提供程序?
用户池似乎提供了很多注册/登录/电子邮件/忘记密码等管道,我可以在 AngularJS 前端中使用它们。
如果前端完成所有身份验证(在 javascript 中),java (spring) 后端是否可以验证从前端传递给它的令牌,如果可以,如何?
或者,对 Cognito 的调用是否可以/应该来自后端,如果可以,又该如何?我是否需要使用 AWS android 移动 SDK?
(我查看了 Lambda 和 Api 网关,但目前它们不是我所追求的)。
【问题讨论】:
【参考方案1】:这些选项中的任何一个都应该可以工作,具体取决于您的应用要求。前者的好处是通过网络发送用户凭据的频率低于后者。
如果您想用您的第一个建议来验证令牌,您可以做一些事情中的一个。 Cognito 在用户进行身份验证时会提供一个 id 令牌、一个刷新令牌和一个访问令牌。任何采用访问令牌(即 GetUser)的调用都会对该访问令牌进行验证。或者,您可以调用刷新令牌,这将对刷新令牌进行验证。有关 Cognito 出售的代币的更多信息,请访问 here。令牌刷新是通过 Cognito auth flow 完成的,使用挑战名称 REFRESH_TOKEN 或 REFRESH_TOKEN_AUTH。
如果您选择使用第二个,AWS 确实有多个适用于各种语言的开发工具包,包括 Java。这些都支持 Cognito API,但 Cognito 确实使用 SRP 来登录用户。客户端计算相当复杂,因此您可能不想自己承担。您可以从SDK on Github 中提取我们的计算,或者您可以使用here 描述的管理员无 SRP 流程。
【讨论】:
谢谢,我会做更多的挖掘工作。我只是想确保自己走在正确的道路上。 @Rob 进展如何?您是否在 Spring 服务器中进行了令牌验证?以上是关于我可以将 AWS 用户池用作 Spring 应用程序中的目录服务吗?的主要内容,如果未能解决你的问题,请参考以下文章
用于获取AWS Cognito用户池令牌的OAUTH2服务器?
使用多个用户池的具有 Cognito 授权的 AWS API 网关