我应该使用 OAuth 让 SPA 与后端通信吗?

Should I use OAuth to have a SPA communicate with the back-end?

我正在用 VueJS 构建一个 SPA。我想在 Laravel 中创建后端 (API)。我不确定是否应该使用 OAuth2 进行身份验证。

我发现的所有解释 OAuth 的示例都使用两种服务来解释它(示例:在 Spotify 上使用 Facebook 登录)。但这不是我的用例。

我的 API 和 SPA VueJS 应用程序基本上(部分)"the same application"。

我应该使用什么身份验证?

答案取决于您的最终要求。

如果您计划为其他客户端公开后端 API 或作为服务

,请为后端使用基于 OAuth 的授权 API

如果您的后端永远不会暴露在外部并且与前端紧密耦合(因为您永远不会使用外部登录选项),请对后端使用简单的基于会话的授权

首先,您的 SPA 和 API 确实属于同一个应用程序这一事实绝对没有理由不使用 OAuth2。

使用 OAuth2、OIDC 的一个很好的理由......是许多公司,如 Auth0、Okta 甚至 Facebook 和 Google,为您提供易于使用的库来为您的应用程序添加身份验证和授权所以你不必担心用户名,密码自己。

Laravel Passport 似乎是将 OAuth 集成到您的 API 中的一个很好的起点(但是,我自己从未使用过它)。

oidc-client-js 是一个 javascript 库,我在纯 javascript、React ...

编写的 SPA 中广泛使用了它

这些库指出了使用 OAuth2/OIDC 的另一个优势:您可以轻松更改编码框架,而不会影响您的身份验证集成。