社交SSO在微服务架构中的外观如何?

时间:2017-05-12 14:16:25

标签: facebook security authentication single-sign-on microservices

晚上所有

我正在努力理解社交SSO(Facebook / Google等)如何在微服务架构中运作的概念。

方案

假设我有2个后端微服务(订单,用户)和一个前端(WebApp)

  • 用户:保存用户个人资料详情,电子邮件,姓名,地址。
  • 订单:保存链接到用户的订单列表
  • WebApp:提供与两个后端服务交互的前端。

添加社交SSO,是为了简化用户注册网站http://www.myproduct.com

的过程

当某人使用社交SSO时,我想在用户服务中创建一个用户帐户。

问题

假设用户在WebApp上单击“使用Facebook登录”并以“John”身份登录

  1. 在我的用户中为John创建帐户的最佳方法是什么 服务?

  2. 以John身份登录后,WebApp如何传播身份 约翰对订单服务?

  3. 订单服务如何验证John是否已登录?

  4. 如何相互依赖的服务订购&用户互相信任?

  5. 关注

    1. 下游服务将与授权服务器(Facebook,Google)非常“讨厌”
    2. 由于

      丹尼尔

1 个答案:

答案 0 :(得分:0)

  1. 在我的用户服务中为John创建帐户的最佳方法是什么?
  2. 这里没什么可做的,只需从FB获取用户详细信息并调用您的用户创建端点。对于RESTful API,您可能希望对https://your_api_gateway/users

    进行POST
    1. 以John身份登录后,WebApp如何将John的身份传播到订单服务?
    2. 一种选择是使用令牌微服务。在登录时,您将创建一个长期的身份验证令牌和一个短期访问令牌。身份验证令牌是您永远不会共享的信任来源。您将访问令牌返回到客户端webapp。从客户端到任何微服务的所有调用都将发送该访问令牌作为请求的一部分。另一种选择是简单地使用FB / Google生成的访问令牌。

      1. 订单服务如何验证John是否已登录?
      2. 您的订单服务将在请求中收到访问令牌。只要访问令牌有效,您就可以假设John已登录。

        1. 如何相互依赖的服务秩序&用户互相信任吗?
        2. 访问令牌由令牌微服务(它应该是受信任的服务)签名,并且它可以包含可以由任何微服务进一步验证的其他信息

          1. 下游服务将变得非常“健谈”。使用授权服务器(Facebook,Google)
          2. 生成访问令牌后,您不需要再次致电FB或Google,直到您的网络用户决定需要再次对用户进行身份验证。