refresh_token在OAuth2身份验证中如何工作?

问题描述 投票:0回答:1

这是一个纯粹的理论问题。我正在使用Angular前端部分,该部分与Spring Boot Rest Service有关。授权过程是通过OAuth2进行的,它使用Keycloack服务器。

我已经在我的应用程序中实现了从Keycloak要求访问令牌的部分,我也尝试在Postman中获取它。一切正常。现在,我看到在邮递员中我收到访问令牌,一个expires_in值(这两个值都清晰可见),一个refresh_token,一个refresh_expires_in和一个session_state。这3个最后值对我来说不太清楚。我试图了解这些。所以,直到现在,如果我正确理解:

1)我的Angular前端将用户凭据发送到Auth服务器(在我的情况下为Keycloack)以接收令牌,该令牌在给定的时间。

2)当我的Angular Frontend请求一些服务时后端,它发送请求本身(链接,参数等),并且也是令牌。

3)服务后端检查令牌并将令牌交给我的前端所需资源。

4)访问令牌可以在到期之前更新,这是刷新令牌的目的和刷新时间。

我到现在为止吗?现在,我读了一些教程(也在Stack Overflow中),但实际上我不明白上面提到的这3个值以及刷新系统是如何工作的。从具体的角度来看,它是如何工作的?

1)令牌到期与会话到期无关。有两个不同的概念。我说的对吗?

2)从本质上讲,令牌的更新过程如何以及它何时发生?每X秒自动执行一次,或者在后端检查令牌有效时,或者在每次登录时,触发更新吗?

3)为了更新访问令牌,刷新令牌也应发送到应用程序服务器。对吗?

4)我通过邮递员在令牌响应中看到的session_state的目的是什么?

我读了几本教程,但是在某些方面我还是有些困惑。而且,在实施之前,我会完全理解这些概念。

angular oauth-2.0 refresh-token
1个回答
2
投票

会话中有几个阶段:

  • 用户登录以获取令牌
  • 使用访问令牌来调用API
  • 访问令牌过期,客户端收到401响应
  • 客户端通过获取带有刷新令牌的新访问令牌来处理401
  • 刷新令牌最终到期,访问令牌更新失败
  • 用户必须再次登录

[主要是了解消息-我的visual write up可能会帮助您理解这些-此文章适用于台式机应用程序,但消息基本相同。

出于兴趣,您的Angular应用可能不应该使用刷新令牌,而应使用SPA access token renewal solution

© www.soinside.com 2019 - 2024. All rights reserved.