簡體   English   中英

Keycloak 管理員 REST API - 使用刷新令牌創建新的訪問令牌而不重新創建刷新令牌

[英]Keycloak admin REST API - create new access token with refresh token without recreating a refresh token

當我有一個有效的刷新令牌時,我正在嘗試使用 Keycloak 管理員 REST API 重新創建訪問令牌。

我通過調用 POST /auth/realms/{realm}/protocol/openid-connect/token 實現了這一點。

問題是端點每次也返回一個新的刷新令牌。 這是 JWT 授權流程應該工作的方式嗎?

我認為正確的流程是僅在調用 auth 端點時獲取新的訪問令牌,並且當刷新令牌過期時,再次登錄以獲取新的刷新令牌; 每次我們查詢新的訪問令牌時都不會獲得新的刷新令牌。

我也讀過這個堆棧溢出帖子。 我在這里錯過了什么嗎? 您可能會在以下請求中找到一張圖片: 在此處輸入圖像描述

使用一次性刷新令牌是一種現代最佳實踐,因為如果相同的刷新令牌被使用兩次,這允許授權服務器踢出用戶。

怎么會這樣? 例如,如果刷新令牌被盜,那么黑客和您的應用程序都會嘗試使用它! 否則很難檢測到系統中的黑客

首先,你混淆了兩件事。 使用 JWT 和 Oauth 授權令牌和刷新令牌開放 ID Connect 身份驗證。

這是兩個不同的對象。 每次獲得訪問令牌時,您都會獲得一個新的 OAuth 刷新令牌。 這就是 OAuth 授予您“無限會話”的方式,但可以選擇在任何嘗試交換時拒絕新的訪問令牌。

另見 RFC https://datatracker.ietf.org/doc/html/rfc6749#section-1.5

  +--------+                                           +---------------+
  |        |--(A)------- Authorization Grant --------->|               |
  |        |                                           |               |
  |        |<-(B)----------- Access Token -------------|               |
  |        |               & Refresh Token             |               |
  |        |                                           |               |
  |        |                            +----------+   |               |
  |        |--(C)---- Access Token ---->|          |   |               |
  |        |                            |          |   |               |
  |        |<-(D)- Protected Resource --| Resource |   | Authorization |
  | Client |                            |  Server  |   |     Server    |
  |        |--(E)---- Access Token ---->|          |   |               |
  |        |                            |          |   |               |
  |        |<-(F)- Invalid Token Error -|          |   |               |
  |        |                            +----------+   |               |
  |        |                                           |               |
  |        |--(G)----------- Refresh Token ----------->|               |
  |        |                                           |               |
  |        |<-(H)----------- Access Token -------------|               |
  +--------+           & Optional Refresh Token        +---------------+

               Figure 2: Refreshing an Expired Access Token

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM