2017-02-22 110 views
1

我正在研究Oauth2,允許開發者授權其應用的用戶使用我的服務。我發現了一些資源,說我的授權服務器應該在用戶發送一個斷言(我的情況是JWT)時返回一個訪問令牌,但它不應該返回一個刷新令牌。我想知道返回刷新令牌有什麼危害。開發人員可以通過調用一個Api來使刷新/訪問令牌無效,這會使從特定JWT ID中授予的訪問無效。Oauth2斷言授權:爲什麼不刷新令牌?

+1

在[RFC7521](https://tools.ietf.org/html/rfc7521)中,刷新標記沒有用,如[4.1節]中所述(https://tools.ietf.org/html /rfc7521#section-4.1):*客戶可以通過請求使用相同斷言的新的訪問令牌來刷新過期的訪問令牌,如果它仍然有效或者有新的斷言。* –

+0

我不同意它沒用。我正在考慮一個客戶在一段時間不活動後醒來。該客戶端必須向其應用服務器請求JWT,然後將該JWT換成訪問令牌。這是2輪往返1次往返。也許這不是什麼大不了的事情,但這裏有一個不可忽略的性能影響。 – Mustack

+0

這是無用的,因爲客戶端可以通過發送相同的斷言(如果沒有過期)或創建新的斷言來刷新它。由於它通常在客戶端生成,因此這是一輪。 –

回答

1

該建議不正確。刷新令牌是可選的,並且可以在客戶端頒發授權許可後由授權服務器酌情發佈。見Oauth2 specification

1.5刷新令牌

刷新令牌用於獲得訪問令牌憑據。刷新 令牌由授權服務器發佈給客戶端,並且噹噹前訪問令牌 變得無效或過期時獲取新的訪問令牌,或者獲得具有相同或更窄範圍的其他訪問令牌012xx(訪問令牌可能具有生命週期較短且權限較資源 擁有者授權更少)。 由 授權服務器決定是否可選發佈刷新令牌。如果授權服務器發出刷新令牌,則在發出訪問令牌(即圖1中的 中的步驟(D))時包括該令牌。

+0

感謝您指出這一點。我重新檢查了我閱讀的來源,這讓我對此產生了疑問。事實證明,這不僅僅是一種建議,而是一種觀察。它說你通常不會在斷言授權流程中提供刷新令牌。我想我只是想知道我是否在這裏失去了劣勢。 https://tools.ietf.org/html/rfc7521 – Mustack

+1

也許它是在談論Oauth2.0中獲得訪問令牌的不同授權授予流程。 「授權代碼授權」提供授權碼,在第二步中您可以獲得訪問/刷新令牌。 「隱式授權」流程在一個步驟中提供訪問令牌,並且不允許使用刷新令牌 – pedrofb