Asp.net
OpenIDConnect 響應類型混淆
在過去的幾天裡,我已經閱讀了有關 OAuth2 和 OpenIDConnect 的所有規範,並使用 Thinktecture Identity Server 實現了一個測試客戶端。我還參加了幾門複數課程,我認為了解它的主要要點。但是我仍然對響應類型感到非常困惑。
OpenIDConnect 規範指定混合流響應類型是“code”、“id_token”和“token”的組合。我了解“id_token”允許我們最初訪問基本的身份資訊。
我也理解程式碼”是指授權程式碼,“令牌”是指訪問令牌,並且將“程式碼”與其他兩個之一或兩者結合會觸發流程,但我的理解是您將授權程式碼交換為訪問令牌授權流程,而隱式流程隱式提供訪問程式碼?
有人可以解決我的困惑嗎?
您所做的以下陳述是正確的:
code指授權碼token指訪問令牌或 (access_token)- 在授權碼流程中,一切換
code為access_token但是您的部分困惑可能源於術語混淆:
- 授權流程一詞並不完全正確;它的正式名稱是授權碼流
- 訪問程式碼一詞不存在
- 隱式流程沒有授權程式碼(也沒有訪問程式碼),實際上根本不涉及允許客戶端從令牌端點獲取令牌的憑證(或授權),因此它的名字
正如@juanifioren 指出的那樣,混合流結合了以下內容:
code id_token流程將直接在身份驗證響應中獲得一個和code,id_token但您將使用從令牌端點code獲取一個access_tokencode token流程將直接在身份驗證響應中獲得一個和code,access_token但您將使用從令牌端點在後端code獲得一個id_token和可能的另一個access_tokencode id_token token流程將直接在 Authentication Response 中獲得a和ancode,您可以在後端使用Token 端點獲取另一個access_token``id_token``codeaccess_token從 Token 端點獲取
access_token與從 Authorization 端點獲取不同,因為機密客戶端向 Token 端點(而不是向 Authorization 端點)進行身份驗證。因此,access_token對於客戶端的機密部分可能有更多的權限和/或更長的壽命。另請參閱有關此主題的規範郵件列表上的簡短主題:http: //lists.openid.net/pipermail/openid-specs-ab/Week-of-Mon-20150209/005229.html