Facebook 社交SSO在微服务体系结构中是什么样子的?

Facebook 社交SSO在微服务体系结构中是什么样子的?,facebook,security,authentication,single-sign-on,microservices,Facebook,Security,Authentication,Single Sign On,Microservices,晚上好 我试图理解社交SSO(Facebook/Google等)在微服务架构中的工作原理 场景 假设我有两个后端微服务(订单、用户)和一个前端(WebApp) 用户:保存用户配置文件详细信息、电子邮件、姓名和地址 订单:保存链接到用户的订单列表 WebApp:提供与两个后端服务交互的前端 添加社交SSO是为了简化用户注册网站的过程 当一个人使用社交SSO时,我想在用户服务中创建一个用户帐户 问题 假设用户在WebApp上单击“使用Facebook登录”,并以“John”身份登录 在我的用户中

晚上好

我试图理解社交SSO(Facebook/Google等)在微服务架构中的工作原理

场景

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

  • 用户:保存用户配置文件详细信息、电子邮件、姓名和地址
  • 订单:保存链接到用户的订单列表
  • WebApp:提供与两个后端服务交互的前端
添加社交SSO是为了简化用户注册网站的过程

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

问题

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

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

  • 以John身份登录后,WebApp如何传播身份 约翰的订单服务

  • 订单服务如何验证John已登录

  • 相互依赖的服务订单和用户如何相互信任

  • 关注点

  • 下游服务将通过授权服务器(Facebook、谷歌)变得非常“闲聊”
  • 谢谢

    丹尼尔

  • 在我的用户服务中为John创建帐户的最佳方法是什么
  • 这里没有什么要做的,只需从FB获取用户详细信息并调用您的用户创建端点即可。对于RESTful API,您可能需要在

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

  • 订单服务如何验证John已登录
  • 您的订单服务将在请求中接收访问令牌。只要访问令牌有效,就可以假定John已登录

  • 相互依赖的服务订单和用户如何相互信任
  • 访问令牌由令牌微服务(应该是受信任的服务)签名,它可以包含其他信息,这些信息可以由您的任何微服务进一步验证

  • 下游服务将通过授权服务器(Facebook、谷歌)变得非常“闲聊”

  • 生成访问令牌后,您无需再次呼叫FB或Google,直到您的webapp确定用户需要再次进行身份验证。

    谢谢@clonq假设令牌服务是微服务,此服务是否会将用户重定向回webapp。。。是否将长寿命令牌作为查询参数传递?这安全吗?其次,假设这个长寿令牌实际上是一个JWT。WebApp将在哪里存储此信息?谢谢Daniel不需要重定向。webapp将对tokenmicroservice进行AJAX调用,该服务将在JSON负载中返回token。在有效负载中发送令牌是安全的,因为无论如何通信都应该通过HTTPS进行。我的建议是使用短期令牌来增加安全性,而不是长期令牌,但在任何情况下,web客户端都可以将其存储在内存中,或者根据您的“客户端会话”过期策略将其保留在本地存储中。Hi@clonq WebApp和令牌服务是不同的微服务。因此,我想让令牌服务处理来自SSO提供者(如FB或google)的响应。有鉴于此,我如何让WebApp知道它以安全的方式生成的长寿令牌?谢谢如果要将调用移动到令牌服务中的SSO提供程序,只需将长寿命令牌返回给客户端即可。所以流程是这样的:WebApp调用TokenService。TokenService调用SSOProvider,它返回一个令牌。TokenService然后将令牌返回到WebApp。有道理吗?