授权码模式-获取令牌
(1)申請授權碼
請求認證服務獲取授權碼:
Get請求: http://localhost:9001/oauth/authorize? client_id=leon&response_type=code&scop=app&redirect_uri=http://localhost參數列表如下:
client_id:客戶端id,和授權配置類中設置的客戶端id一致。 response_type:授權碼模式固定為code scop:客戶端范圍,和授權配置類中設置的scop一致。 redirect_uri:跳轉uri,當授權碼申請成功后會跳轉到此地址,并在后邊帶上code參數(授權碼)首先跳轉到登錄頁面:
輸入賬號和密碼,點擊Login。 Spring Security接收到請求會調用UserDetailsService接口的loadUserByUsername方法查詢用戶正確的密碼。 當前導入的基礎工程中客戶端ID為leon,秘鑰也為leon即可認證通過。
接下來進入授權頁面:
點擊Authorize,接下來返回授權碼: 認證服務攜帶授權碼跳轉redirect_uri,code=k45iLY就是返回的授權碼
(2)申請令牌
拿到授權碼后,申請令牌。 Post請求:http://localhost:9001/oauth/token 參數如下:
grant_type:授權類型,填寫authorization_code,表示授權碼模式 code:授權碼,就是剛剛獲取的授權碼,注意:授權碼只使用一次就無效了,需要重新申請。 redirect_uri:申請授權碼時的跳轉url,一定和申請授權碼時用的redirect_uri一致。此鏈接需要使用 http Basic認證。 什么是http Basic認證? http協議定義的一種認證方式,將客戶端id和客戶端密碼按照“客戶端ID:客戶端密碼”的格式拼接,并用base64編 碼,放在header中請求服務端,一個例子: Authorization:Basic WGNXZWJBcHA6WGNXZWJBcHA=WGNXZWJBcHA6WGNXZWJBcHA= 是用戶名:密碼的base64編碼。 認證失敗服務端返回 401 Unauthorized。
以上測試使用postman完成:
http basic認證:
客戶端Id和客戶端密碼會匹配數據庫oauth_client_details表中的客戶端id及客戶端密碼。
點擊發送: 申請令牌成功
返回信如下:
access_token:訪問令牌,攜帶此令牌訪問資源 token_type:有MAC Token與Bearer Token兩種類型,兩種的校驗算法不同,RFC 6750建議Oauth2采用 Bearer Token(http://www.rfcreader.com/#rfc6750)。 refresh_token:刷新令牌,使用此令牌可以延長訪問令牌的過期時間。 expires_in:過期時間,單位為秒。 scope:范圍,與定義的客戶端范圍一致。 jti:當前token的唯一標識?
總結
以上是生活随笔為你收集整理的授权码模式-获取令牌的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OAuth2.0授权码认证流程介绍
- 下一篇: 令牌的校验与刷新