我在架构方面遇到了困难,并且想知道某人是否有某些见解。
计划
流程:
问题:
答案 0 :(得分:7)
微服务架构中的常见方法是使用单个身份验证“网关”,通常它是API网关的一部分。
除了你的passport.ms.com之外,你还有一些代理会检查来自标题的访问令牌,如果它无效 - 给出错误。如果令牌有效 - 将请求代理到相应的微服务。
这样您就不必重复自己了 - 您不必为每个微服务实现N次身份验证。
然后,如果您需要更精细的控制 - 用户可以访问的内容(通常称为授权),那么您通常会在每个特定的微服务中实现它。
简而言之,您的微服务不应该关心传入的请求是否经过身份验证 - 它已经过预先过滤。微服务仅决定用户X是否可以执行操作Y.
PS。您可以将API网关与Passport / Oauth工具结合使用,也可以单独运行它们 - 这取决于您。 AWS已经提供API网关作为服务(证明时尚微服务正在变得如何),但我找不到任何好的开源类似物。
答案 1 :(得分:0)
您的 api应该具有一个网关,用于处理身份验证并与不同的微服务通信。 在顶层对用户进行身份验证(或拒绝未经授权的用户),合并来自不同服务的响应,然后您的客户端(Web或移动用户)可以使用该数据。
此方法的一个优点是您的客户只需要记住一个URL。
示例:仅需要microservice.com,而不需要 catalog.microservice.com,users.microservice.com,passport.microservice.com等
与许多单独的API地址相比,单个端点地址(URL)更容易记住和配置。
这是描述该体系结构的图像的链接。
答案 2 :(得分:0)
答案 3 :(得分:-1)
我不是专家,但如果您需要使用不同的应用程序,那么这个流程对我来说没问题。
关于你的第二个问题,是的,这可以是中间件