3

我有一个奇怪的场景。我希望有一个带有多个 SPA 作为前端的后端 API(都在同一个域下但不同的子域下)。这是使用 JWT 和 Refresh 令牌的最初想法。

  1. 用户使用 USN/PWD 登录。
  2. 服务器对请求进行身份验证并在声明中发回具有过期和权限的 JWT。
  3. 服务器在域和所有子域的 cookie 中设置刷新令牌(存储在会话的数据存储中)。
  4. 现在所有请求都将 JWT 和 cookie 发送到服务器。
  5. 如果 JWT 已过期,则检查刷新 cookie 是否仍然有效并发送新的 JWT

现在,如果用户在同一域下的不同 SPA 中,我们可以发送一个请求,/token?grant_type=refresh_token如果刷新令牌存储在 cookie 中,则该请求将发送一个 JWT 令牌。

我想知道这种方法的缺点。

我阅读的另一种方法(https://stackoverflow.com/a/29088725/4664675)看起来很有趣,因为 JTI 基本上是会话 ID。

我不太担心 15 分钟到期令牌和大约 1 周滑动会话的刷新令牌。从 SPA 到 API 的所有连接也都通过 HTTPS。

有人会推荐处理这种情况的最佳方法(用于许多应用程序的登录名,例如 Google 用于邮件、驱动器、照片、youtube 等)?我喜欢 JWT 的想法,这样我就不必在每次请求时都访问数据存储区。

再往前走一点,我想制作使用相同 API 的本机应用程序,因此可以处理两者的身份验证和授权过程将是理想的!好像我需要单点登录方法?

PS。这一切都来自研究,这将是我将要编写的第一个身份验证/授权工作流程。

4

0 回答 0