refresh_token 在 OAuth2 身份验证中如何工作?
How does a refresh_token work in OAuth2 authentication?
这是一道纯理论题。我正在为 Angular 前端部分工作,它与 Spring 启动休息服务有关。授权过程是通过 OAuth2,它使用 Keycloack 服务器。
我已经在我的应用程序中实现了从 Keycloak 请求访问令牌的部分,我也尝试在 Postman 中获取它。一切正常。现在,我看到在 Postman 中我收到了访问令牌,一个 expires_in 值(这两个都很清楚),还有一个 refresh_token、一个 refresh_expires_in 和一个 session_state.最后这 3 个值对我来说不是很清楚。我试图理解那些。所以,到现在为止,如果我理解正确的话:
1) 我的 Angular 前端将用户凭据发送到 Auth 服务器
(在我的例子中是 Keycloack)以接收令牌,该令牌将于
给定的时间。
2) 当我的 Angular 前端向服务请求一些服务时
后端,它发送请求本身(link、参数等)和
也是令牌。
3) 服务后端检查令牌并给我的前端
所需资源。
4) access token可以在过期前续费,这是
刷新令牌的用途和刷新时间。
我到现在为止是对的吗?现在,我阅读了一些教程(也在 Stack Overflow 中),但我真的不明白上面提到的这 3 个值和刷新系统是如何工作的。具体来说,它是如何工作的?
1) 令牌过期与会话过期无关。有两个不同且独立的概念。我说得对吗?
2) 实质上,令牌更新的过程是怎样的,它是如何以及何时发生的?每X秒自动触发,或者后端检查token是否有效,或者每次登录时,触发更新?
3) 为了更新访问令牌,还应将刷新令牌发送到应用程序服务器。正确吗?
4) 我在 Postman 的令牌响应中看到的 session_state 的目的是什么?
我读了几个教程,但我对某些方面还是有点困惑。而且,在实施之前,我会完全理解这些概念。
会话中有几个阶段:
- 用户登录领取代币
- 使用访问令牌调用 API
- 访问令牌过期并且客户端收到 401 响应
- 客户端通过获取带有刷新令牌的新访问令牌来处理 401
- 刷新令牌最终过期,访问令牌更新失败
- 用户必须重新登录
主要是理解消息 - 我的 visual write up 可能会帮助你理解这些 - 本文是针对桌面应用程序的,但消息大致相同。
出于兴趣,您的 Angular 应用可能不应使用刷新令牌,而应使用 SPA access token renewal solution。
这是一道纯理论题。我正在为 Angular 前端部分工作,它与 Spring 启动休息服务有关。授权过程是通过 OAuth2,它使用 Keycloack 服务器。
我已经在我的应用程序中实现了从 Keycloak 请求访问令牌的部分,我也尝试在 Postman 中获取它。一切正常。现在,我看到在 Postman 中我收到了访问令牌,一个 expires_in 值(这两个都很清楚),还有一个 refresh_token、一个 refresh_expires_in 和一个 session_state.最后这 3 个值对我来说不是很清楚。我试图理解那些。所以,到现在为止,如果我理解正确的话:
1) 我的 Angular 前端将用户凭据发送到 Auth 服务器 (在我的例子中是 Keycloack)以接收令牌,该令牌将于 给定的时间。
2) 当我的 Angular 前端向服务请求一些服务时 后端,它发送请求本身(link、参数等)和 也是令牌。
3) 服务后端检查令牌并给我的前端 所需资源。
4) access token可以在过期前续费,这是 刷新令牌的用途和刷新时间。
我到现在为止是对的吗?现在,我阅读了一些教程(也在 Stack Overflow 中),但我真的不明白上面提到的这 3 个值和刷新系统是如何工作的。具体来说,它是如何工作的?
1) 令牌过期与会话过期无关。有两个不同且独立的概念。我说得对吗?
2) 实质上,令牌更新的过程是怎样的,它是如何以及何时发生的?每X秒自动触发,或者后端检查token是否有效,或者每次登录时,触发更新?
3) 为了更新访问令牌,还应将刷新令牌发送到应用程序服务器。正确吗?
4) 我在 Postman 的令牌响应中看到的 session_state 的目的是什么?
我读了几个教程,但我对某些方面还是有点困惑。而且,在实施之前,我会完全理解这些概念。
会话中有几个阶段:
- 用户登录领取代币
- 使用访问令牌调用 API
- 访问令牌过期并且客户端收到 401 响应
- 客户端通过获取带有刷新令牌的新访问令牌来处理 401
- 刷新令牌最终过期,访问令牌更新失败
- 用户必须重新登录
主要是理解消息 - 我的 visual write up 可能会帮助你理解这些 - 本文是针对桌面应用程序的,但消息大致相同。
出于兴趣,您的 Angular 应用可能不应使用刷新令牌,而应使用 SPA access token renewal solution。