OAuth 2.0系列教程(八) 授權碼授權
阿新 • • 發佈:2018-12-23
作者:Jakob Jenkov 譯者:林浩 校對:郭蕾
授權碼授權總共由2個請求和2個響應組成。一個授權請求+響應,和一個令牌請求+響應。 授權請求 授權請求被髮送到授權端點以獲取一個授權碼。這是請求中用到的引數:
response_type | 必須。必須被設定到程式碼裡 |
client_id | 必須。當客戶端被註冊時,授權伺服器要標識的客戶端。 |
redirect_uri | 可選。通過客戶端註冊的重定向URI。 |
scope | 可選。請求可能的作用域。 |
state | 可選(推薦的)。任何需要被傳遞到客戶端請求的URI客戶端的狀態。 |
授權響應 授權響應包含了需要用來獲取訪問令牌的授權碼。這是響應包括的引數:
code | 必須。授權碼 |
state | 如果出現在請求中,必須包含。如果有的話,和客戶端請求中傳送的state引數一樣。 |
授權錯誤 如果授權期間發生錯誤,兩種情況會發生。 第一種情形是,客戶端沒有被授權或識別。比如,請求中錯誤的重定向URI。這種情況下,授權伺服器沒有必要重定向資源擁有者到重定向URI,而是通知資源擁有者發生了錯誤。 第二種情形是,客戶端被正確地授權了,但是其他某些事情失敗了。這種情況下下面地錯誤響應會被髮送到客戶端,包括在重定向URI中:
error | 必須。必須是預先定義的錯誤碼之一。參見規範查查這些錯誤碼及它們的含義。 |
error_description | 可選。一段UTF-8編碼的描述錯誤的文字。適用於開發者,而不是終端使用者。 |
error_uri | 可選。 一個指向包含人類可讀的錯誤資訊網頁的URI。 |
state | 必須。如果出現在授權請求期間,和請求中的state引數一樣。 |
令牌請求 一旦授權碼被獲取到了,客戶端可以用它獲取訪問令牌。這是訪問令牌請求引數:
grant_type | 必須。必須被設定到授權碼中。 |
code | 必須。被授權伺服器接收到的授權碼。 |
redirect_uri | 必須。如果請求URI包括在授權請求中,之後必須是相同的。 |
令牌響應 訪問令牌請求的響應是包含訪問令牌及一些更多資訊的JSON字串:
{ "access_token " : "...",
"token_type" : "...",
"expires_in" : "...",
"refresh_token" : "...",
}
access_type屬性是授權伺服器分配的訪問令牌。 token_type是被授權伺服器分配的令牌型別。 expires_in屬性是指訪問令牌過多少秒後,就不再有效。訪問令牌過期值是可選的。 refresh_token屬性包含令牌過期後重新整理的令牌。重新整理的令牌用於,一旦響應返回的不再有效時,包含一個新的訪問令牌。