Laravel 不同 back-end 项目之间的身份验证

Laravel authentication between different back-end project

我有两个或更多 back-end API(Laravel) 项目和一个 front-end React JS 项目。在 front-end 应用程序中,我将调用所有 back-end API 项目。

当用户登录时,身份验证将签入App 1(使用Laravel passport)和return access_token.

我想在从 App 1App 2 调用 API 时使用这些 access_token。但是,主要问题是如何检查从 App 2App 1 服务器的 access_token 验证。

为了解决这个问题,我认为但不确定它是否正确,我可以在 App 2 服务器中创建中间件并获取每个传入的 access_token 并将其发送以检查验证至 App 1。如果return true,用户可以访问,否则不能访问。

但是,我认为这种方式是不合适的,因为从App 2App 1,每个传入的请求都需要检查access_token验证,这会减慢服务器和瓶颈问题。

我已经在 google 上搜索了很多帖子,但还没有找到最适合我的方法。我找到了一种 OAuth 服务器实现方式 https://www.youtube.com/watch?v=K7RfBgoeg48 但是,我认为这种方式在我的项目结构中效果不佳,因为我有很多自定义项。

我也看了reddit上的讨论(https://www.reddit.com/r/laravel/comments/dqve4z/same_login_across_multiple_laravel_instances/),但是还是没看懂。

这里有几个选项:

  1. 我希望您有一个数据库,其中包含您的用户的所有访问和刷新令牌 - 因此只需创建一个从 App2 后端服务器到包含您的访问和刷新令牌的数据库的数据库访问,然后检查他们通过新的数据库连接直接在 App2 中。

  2. 创建将检查从 App2 到 App1 的用户身份验证的中间件,但正如您正确指出的那样,这会导致额外的加载时间。

  3. 取决于您是否需要最终用户知道他正在连接到“另一台服务器” - 即 App2 - 您可以使用 Oauth2 授权 - https://www.youtube.com/watch?v=zUG6BHgJR9w

选项 1. 对我来说似乎是最好的解决方案