我想要建立一个微服务架构。它应该有13个微服务和3个客户端(2个网络和1个移动)。
在我们的场景中,我们有:
我们将有一个API网关。
每个请求都由API网关处理,它应该(或调用负责的)检查请求的令牌是否有效,标识它是客户、雇员还是管理员,并检查该用户是否拥有访问请求API/microservice的权限。
我对这个解决方案有一些误解,所以我希望得到一些帮助:
发布于 2018-03-01 16:54:37
API网关的责任是什么?
API网关可以理解为位于所有其他服务之前的一个服务,并允许您向客户端公开这些服务。这样做,它允许所有的交通通过自己,因此,它可以做许多事情,如
您有一个带有标头的传入请求,您需要将它传递给将实际处理请求的下游服务。API网关几乎可以在两者之间做任何事情,就像上面提到的那样。
身份微型服务的责任是什么?
标识是帮助您唯一标识用户的一组数据。在您的情况下,您拥有Active Directory,其中包含所有员工的身份信息。同样,您可以保存有关客户的信息就是这样的服务之一。身份应该是唯一负责的基本人口统计信息的用户,帮助您识别他。除此之外,这样的服务可能需要提供与使用身份有关的安全性。
标识可以具有角色和服务,在相互通信时,需要传递告知下游服务身份的信息,以及该服务可以验证所传递的身份信息的一些方法。
这就是OAuth发挥作用的地方,如果您添加身份、身份提供程序和授权,就会得到一些称为OIDC或OpenID连接的东西。
这样,您应该能够为您的每个标识定义角色,然后让单个服务决定具有特定角色的特定标识能做什么或不能做什么。
如何识别给定的用户是客户、员工还是管理员?
那么,您可以使用该角色来标识(如果您可以将角色添加到您的标识中),或者让您的身份服务为您回答这个问题。传递userId,让服务告诉您它是基于用户数据来源的哪种用户。除非我有更多的洞察力,否则很难回答这个问题。
https://stackoverflow.com/questions/49051663
复制相似问题