是否可以将AWS Cognito用户池用作在EC2中运行的Spring Boot应用程序的身份验证和授权提供程序?
用户池似乎提供了许多regsiter / login / email / forgotpassword等管道,我可以在AngularJS前端使用它。
如果前端执行所有auth(在javascript中),java(spring)后端是否可以验证从前端传递给它的令牌,如果是,如何?
或者,对Cognito的调用可以/应该来自后端,再次,如果是这样的话?我是否需要使用AWS Android移动SDK?
(我看过Lambdas和Api网关,但它们不是我现在所追求的。)
答案 0 :(得分:2)
这些选项中的任何一个都应该有效,具体取决于您的应用要求。前者确实具有通过线路发送用户凭证的好处,而不是后者。
如果你想用你的第一个建议验证令牌,你可以做一些事情。 Cognito在用户进行身份验证时会出现id令牌,刷新令牌和访问令牌。任何采用访问令牌(即GetUser)的调用都会对该访问令牌进行验证。或者,您可以调用刷新令牌,这将对刷新令牌进行验证。有关令牌Cognito vends的更多信息可用here。令牌刷新是通过Cognito auth flow完成的,使用挑战名称REFRESH_TOKEN或REFRESH_TOKEN_AUTH。
如果您选择使用第二个,AWS确实有多种SDK用于各种语言,包括Java。这些都支持Cognito API,但Cognito确实使用SRP对用户进行签名。客户端计算相当复杂,因此您可能不希望自己使用它。您可以从SDK on Github中删除我们的计算,或者您可以使用管理员没有描述here的SRP流程。