带有刷新令牌的JWT身份验证的多个SPA

时间:2016-11-04 01:24:11

标签: authentication single-sign-on single-page-application jwt refresh-token

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

  1. 用户使用USN / PWD登录。
  2. 服务器对请求进行身份验证,并发回一个JWT,其中包含声明中的过期和权限。
  3. 服务器在域和所有子域的cookie中设置刷新令牌(存储在会话的数据存储中)。
  4. 现在所有请求都将JWT和cookie发送到服务器。
  5. 如果JWT已过期,请检查刷新cookie是否仍然有效并发送新的JWT
  6. 现在,如果用户位于同一域下的其他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。这一切都来自研究,这将是我将要编写的第一个认证/授权工作流程。

0 个答案:

没有答案