晚上所有
我正在努力理解社交SSO(Facebook / Google等)如何在微服务架构中运作的概念。
方案
假设我有2个后端微服务(订单,用户)和一个前端(WebApp)
添加社交SSO,是为了简化用户注册网站http://www.myproduct.com
的过程当某人使用社交SSO时,我想在用户服务中创建一个用户帐户。
问题
假设用户在WebApp上单击“使用Facebook登录”并以“John”身份登录
在我的用户中为John创建帐户的最佳方法是什么 服务?
以John身份登录后,WebApp如何传播身份 约翰对订单服务?
订单服务如何验证John是否已登录?
如何相互依赖的服务订购&用户互相信任?
关注
由于
丹尼尔
答案 0 :(得分:0)
这里没什么可做的,只需从FB获取用户详细信息并调用您的用户创建端点。对于RESTful API,您可能希望对https://your_api_gateway/users
进行POST一种选择是使用令牌微服务。在登录时,您将创建一个长期的身份验证令牌和一个短期访问令牌。身份验证令牌是您永远不会共享的信任来源。您将访问令牌返回到客户端webapp。从客户端到任何微服务的所有调用都将发送该访问令牌作为请求的一部分。另一种选择是简单地使用FB / Google生成的访问令牌。
您的订单服务将在请求中收到访问令牌。只要访问令牌有效,您就可以假设John已登录。
访问令牌由令牌微服务(它应该是受信任的服务)签名,并且它可以包含可以由任何微服务进一步验证的其他信息
生成访问令牌后,您不需要再次致电FB或Google,直到您的网络用户决定需要再次对用户进行身份验证。