2016-02-21 22 views
1

那么我们来看看基本的电子商务微服务。如何跨多个微服务提供用户的身份?

  1. 身份和访问。这个微服务将照顾用户帐户,角色
    和身份验证。身份验证方法将基于通常的基于令牌的流程(用户输入用户名+密码并且服务器通过cookie返回唯一和
    随机令牌)。此服务也可用于获取用户配置文件。
  2. 购物车微服务。这种微服务可用于将产品放入购物车中。
    检查购物车有什么产品。等...

假设“身份和访问”微服务将用于生成随机令牌作为一个成功的身份验证的结果,并将该令牌链接到用户,该令牌如何被用来使用户的身份可用于购物车微服务?例如,当用户将产品添加到他的购物车时,他将沿着授权令牌发送消息,并且购物车微服务必须基于该令牌识别用户。

分布式数据库可以作为选项吗?一个数据库,这些令牌存储和链接到用户构建,并且所有微服务都可以访问?

还是应该所有的微服务都从一个特殊的身份和访问API中获取用户的身份,这将根据访问令牌公开用户?

+0

可能的重复http://stackoverflow.com/questions/29644916/microservice-authentication-strategy –

回答

1

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

微服务拥有自己的数据,并通过良好定义的接口暴露它。 没有其他微服务可以直接访问其他微服务拥有的数据。

因此,在这种情况下,一种解决方案是拥有令牌微服务或您描述的最后一种解决方案。

+0

谢谢。接受和upvoted。结束了使用身份和访问服务。从某个服务可以找到有关用户或API的信息的数据库是一回事。下游服务(仅读取用户信息)决不会干扰用户数据库的结构。如果使用API​​,则API结构也是如此。我认为网络上有很多误导性的文章,关于什么在服务解耦方面应该被认为是一种好的做法。 HTTP API或数据库API相同 –

+0

要继续:这一切都取决于您同意的约定。 http API或数据库都是访问下游服务数据的简单接口。所以从设计的角度来看它们是平等的。您甚至可以利用rdbms安全性概念来限制来自下游服务的某些操作/数据,而不是构建自己的HTTP API –

相关问题