gpt4 book ai didi

Laravel Passport、Oauth 和微服务

转载 作者:行者123 更新时间:2023-12-02 18:51:37 25 4
gpt4 key购买 nike

我在架构方面遇到困难,想知道是否有人有一些见解。

计划

  • 我将拥有多个微服务(不同的 Laravel 项目、catalog.microservice.com、billing.microservice.com),每个微服务都提供一个 API。
  • 在这些之上将是一个使用这些 API 的 Angular Fronted。
  • 由于 Laravel 5.3 Passport,我现在将拥有另一个微服务 (passport.microservice.com) 进行身份验证,这甚至更容易。

流程:

  • 用户访问catalog.microservice.com
  • 用户需要进行身份验证并提供用户名和密码
  • Angular(又名客户端)通过密码 grand 类型向 Passport.microservice.com 发出请求以获取授权 token
  • 现在我有了 token ,我有权从 Catalog.microservice.com 调用资源
  • catalog.microservice.com 需要知道 token 是否有效并向 Passport.microservice.com 发出请求(某种中间件?)
  • passport.microservice.com 返回用户、范围等。

问题:

  • 这是一个好方法吗?
  • catalog.microservice.com 中的 token 验证可以是中间件吗?

最佳答案

微服务架构中的常见方法是使用单个身份验证“网关”,通常它是 API 网关的一部分。

因此,除了您的 Passport.ms.com 之外,您还有一个代理可以检查 header 中的访问 token ,如果它无效,则给出错误。如果 token 有效 - 将请求代理到相应的微服务。

这样您就不必重复自己 - 不必为每个微服务实现 N 次身份验证。

然后,如果您需要更精细的控制 - 用户到底可以访问什么(通常称为授权),那么传统上您可以在每个特定的微服务上实现它。

简而言之,您的微服务不应该关心传入请求是否经过身份验证 - 它已经针对它们进行了预过滤。微服务仅决定用户X是否可以执行操作Y。

PS。您可以将 API 网关与 Passport/Oauth 工具结合起来,也可以单独运行它们 - 这取决于您。 AWS 已经提供 API 网关即服务(证明微服务变得多么流行),但我找不到任何好的开源类似产品。

关于Laravel Passport、Oauth 和微服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39126827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com