【问题标题】:User authentication in microservice application hosted on Amazon WS托管在 Amazon WS 上的微服务应用程序中的用户身份验证
【发布时间】: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


    【解决方案1】:

    首先,AWS Cognito 包含两个服务。

    • AWS Cognito UserPools(即身份提供者)- 这是您可以创建用户并使用其他策略管理其凭证的服务。它还可以提供登录屏幕,我们可以在其中自定义徽标和外观,使其成为即插即用的登录服务。然后还可以配置身份验证流程(例如,将服务设为 OpenIDConnect 身份验证提供程序,以便在用户登录后返回 JWT 令牌)。还可以连接社交身份(Facebook、Google 等)和 SAML。
    • AWS Cognito 联合身份(身份联合以授予用户访问 AWS 服务)- 该服务能够接受 AWS Cognito 用户池令牌或来自其他提供商的直接访问,我们可以联合对 AWS 资源的访问。例如,AWS Cognito Federated Identities 可以授予用户临时访问权限,并通过其他提供商(例如 AWS Cognito UserPools)的身份验证将文件上传到 S3。

    更多详情请参考文章The Difference Between AWS Cognito UserPools and Federated Identities?

    回到你的问题,

    1. 到目前为止,我正在考虑将 Cognito 替换为我的 身份验证服务?

    您可以使用 AWS Cognito UserPools 身份验证服务来颁发 JWT 令牌并在您的其他服务终端节点的 AWS Lambda Custom Authorizer 中验证令牌。这也是你可以做授权的地方。

    1. 我的静态网站将为用户实现 JavaScript SDK 登录/注册。我说的对吗?

    不一定。如果您使用 AWS Cognito UserPools 托管 UI,您将获得登录、注册、密码更改、确认页面,默认情况下,还会自动重定向联合身份(基于配置),例如 Facebook、Google 或企业凭证,例如 Office365。尽管自定义有限,但您应该能够添加自己的徽标并更改这些屏幕的背景颜色。如果您打算自己实现这一点,那么您可以使用 AWS 开发工具包来实现这些屏幕。

    有关无服务器架构的更多详细信息,请参阅Full Stack Serverless Web Apps with AWS

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-05
      • 1970-01-01
      • 2017-09-12
      • 2021-03-31
      相关资源
      最近更新 更多