授權碼模式流程
- 客戶端請求第三方授權
- 用戶(資源所有者)同意給客戶端授權
- 客戶端獲取到授權碼,請求認證服務器申請令牌
- 認證服務器向客戶端響應令牌
- 客戶端請求資源服務器的資源,資源服務器校驗令牌合法性,完成授權
- 資源服務器返回受保護資源
申請授權碼
http://localhost:40400/auth/oauth/authorize?client_id=XcWebApp&response_type=code&scop=app&redirect_uri=http://localhost
- client_id:客戶端id,和授權配置類中設置的客戶端id一致。
- response_type:授權碼模式固定爲
- code:scop:客戶端範圍,和授權配置類中設置的scop一致。
- redirect_uri:跳轉uri,當授權碼申請成功後會跳轉到此地址,並在後邊帶上code參數(授權碼)
首先跳轉到登錄頁面:
登錄後,成功後會跳到授權頁面
授權
點擊Authorize,可以獲得授權碼
http://localhost/?code=R5A7yI
R5A7yI就是授權碼。
申請令牌
post請求: http://localhost:40400/auth/oauth/token
添加相關參數
- grant_type:授權類型,填寫authorization_code,表示授權碼模式
- code:授權碼,就是剛剛獲取的授權碼,注意:授權碼只使用一次就無效了,需要重新申請。
- redirect_uri:申請授權碼時的跳轉url,一定和申請授權碼時用的redirect_uri一致。
然後Authorization 選擇Basic Auth,輸入賬號密碼
授權服務器返回token
- access_token : 訪問令牌,客戶端攜帶此令牌請求資源服務器資源
- token_type:有MACToken與BearerToken兩種類型,兩種的校驗算法不同,RFC6750建議Oauth2採用Bearer
- refresh_token:刷新token,使用此令牌可以延長訪問令牌的過期時間
- expires_in: 過期時間,單位爲秒。
- scope:範圍,與定義的客戶端範圍一致。
- jti:jwt的id
服務授權流程
攜帶令牌訪問服務
消息頭參數
Authorization Bearer+空格+token
密碼模式
密碼模式相比於授權碼模式:不用授權碼,可以直接用賬號密碼向授權服務器申請令牌
校驗令牌
Get:http://localhost:40400/auth/oauth/check_token?token=獲取到的token
刷新令牌
Post:http://localhost:40400/auth/oauth/token
參數
grant_type:固定爲refresh_token
refresh_token:刷新令牌(注意不是access_token,而是refresh_token)