Authentication 如何跨多个微服务提供用户身份?

Authentication 如何跨多个微服务提供用户身份?,authentication,authorization,microservices,Authentication,Authorization,Microservices,让我们来看看基本的电子商务微服务 身份和访问。此微服务将负责用户帐户、角色 和身份验证。验证方法将基于通常的 基于令牌的流(用户输入用户名+通行证,服务器返回唯一的 随机令牌(通过cookie)。此服务还可用于获取用户配置文件 购物车微服务。此微服务可用于将产品放入购物车。 检查购物车有哪些产品。等等 假设“身份和访问”微服务将用于在成功身份验证后生成随机令牌,并用于将该令牌链接到用户,那么该令牌将如何用于将用户的身份提供给购物车微服务?例如,当用户将产品添加到购物车时,他将发送授权令牌,购物车

让我们来看看基本的电子商务微服务

  • 身份和访问。此微服务将负责用户帐户、角色
    和身份验证。验证方法将基于通常的
    基于令牌的流(用户输入用户名+通行证,服务器返回唯一的 随机令牌(通过cookie)。此服务还可用于获取用户配置文件
  • 购物车微服务。此微服务可用于将产品放入购物车。
    检查购物车有哪些产品。等等 假设“身份和访问”微服务将用于在成功身份验证后生成随机令牌,并用于将该令牌链接到用户,那么该令牌将如何用于将用户的身份提供给购物车微服务?例如,当用户将产品添加到购物车时,他将发送授权令牌,购物车微服务必须基于该令牌识别用户

    分布式数据库是一种选择吗?存储了这些令牌并链接到用户构建的数据库,所有微服务都可以访问该数据库


    或者所有的微服务都应该从一个特殊的身份和访问API获得用户的身份,该API将基于访问令牌公开用户?

    分布式数据库肯定与微服务的以下基本原则相冲突:

    微服务拥有其数据,并通过定义良好的接口将其公开。 任何其他微服务都不能直接访问其他微服务拥有的数据


    因此,在这种情况下,一个解决方案是使用代币微服务或您描述的最后一个解决方案。

    可能重复感谢。接受并投票表决。最终使用了身份和访问服务。拥有一个数据库,服务可以从中找到关于用户的信息,或者以某种方式找到API,这是同样的事情。下游服务(只读取用户信息)永远不会与用户数据库的结构发生冲突。如果使用了API,API结构也是如此。我认为网络上有很多误导性的文章,都是关于在服务解耦方面什么应该被认为是一个好的实践。HTTP API或数据库API是相同的继续:这取决于您同意的约定。http API或数据库都是访问下游服务数据的简单接口。因此,从设计角度来看,它们是相等的。您甚至可以利用rdbms安全概念来限制来自下游服务的某些操作/数据,而不是为HTTP API构建自己的操作/数据