【发布时间】:2017-08-19 20:59:39
【问题描述】:
我正在构建基于微服务架构的 Web 应用程序。目前,我正在考虑几种用户身份验证流程。我预测以下示例用户角色:
- 管理员 - 能够创建内容、上传文件等(管理员帐户只能由其他管理员创建)
- 未经授权的用户 - 可以查看内容
- 授权用户 - 可以评论内容
这是我目前对身份验证流程的看法:
- 身份验证服务 - 可以使用用户凭据和权限访问数据库
- api 网关 - 检索用户请求,检查用户是否登录(即使用身份验证服务验证 OAuth2 访问令牌)并根据用户请求将流量转移到其他服务(附加 JWT 令牌和一些基本用户信息)
- 另一个服务 - 仅接受来自 api 网关的请求,并信任来自 JWT 令牌的用户数据(无需连接身份验证服务即可获取有关用户的信息)。
在 AWS 基础设施上部署了一些东西后,我的思维方式发生了一些变化。据我了解 AWS 产品(Lambda - 无服务器应用程序和 API 网关),我应该按如下方式实现身份验证流程:
- 身份验证服务 - 获取用户请求,从 dynamoDB 检索数据,并为用户 cookie 提供由私钥签名的 JWT
- 任何其他服务 - 使用 JWT 令牌检索请求,使用公钥验证签名,并执行一些操作。
现在问题来了:
deos AWS Cognito 如何适合这里?对我有用吗?据我了解,Cognito 简化了通过第三方(facebook、twitter 等)验证用户的流程。 AWS Cognito 是否提供与我的应用程序分开的登录页面,或者它只是后台/Web 服务实现?
到目前为止,我正在考虑将 Cognito 作为我的 authentication service 的替代品 - 我的任何服务都应该执行由亚马逊 SDK 提供的 Cognito 身份验证流程,并且我的静态网站将为用户登录/注册实现 JavaScript SDK。我说的对吗?
【问题讨论】:
标签: amazon-web-services authentication architecture microservices aws-cognito