2017-11-17 175 views
1

OpenID Connect Core 1.0 incorporating errata set 1 Section 12.2是說:如何刷新id_token

12.2. Successful Refresh Response 

Upon successful validation of the Refresh Token, the response body is the Token Response of Section 3.1.3.3 except that it might not contain an id_token. 

本來當獲取id_token,它是一個簽名,也許加密,智威湯遜。 然後,id_token轉發到同一安全域內的其他服務。 這些其他服務需要確保最終用戶驗證了請求。 這對原始請求很有效。 但是,在刷新方案中,如果id_token過期,「其他服務」沒有方法來確認用戶。

確定在用戶信息端點有相同的信息,但這需要「其他服務」來獲取訪問令牌。 基於最不重要的原則,訪問令牌具有比被轉發的id_token更多的特權。

我知道的唯一的其他選項是將id_token複製到另一個JWT併發送它,但這當然是更多的「make work」。

在我看來,如果沒有原始請求的範圍更改,則不返回id_token是一個問題。

回答

0

OpenID Connect協議給實施者留下了一些實施決定。你描述的這種情況就是這樣一種情況。但是,我看到幾個選項,你可以嘗試一下,

提示=無

這使得

如果提到的相關服務可能會消耗與授權服務器相同的共享會話授權服務器之間的SSO的行爲,他們可以使用prompt = none來獲得一個交互免費的id令牌。

的授權服務器不得在下列情況下,最終用戶交互:

認證請求中包含與 值沒有任何提示參數。在這種情況下,如果最終用戶尚未通過身份驗證,或者無法通過身份驗證,則授權服務器務必返回 錯誤。

另外,如果這些相關服務具有這樣的要求,則可以以最小範圍值發送授權請求。

會話共享

如果什麼提到服務駐留在同一個域內,共享同一個會話。這不會讓他們分享同一個校長嗎?這意味着您不必共享id令牌與依賴服務。