密码授权模式讲解
密碼授權(quán)實(shí)現(xiàn)
(1)認(rèn)證
密碼模式(Resource Owner Password Credentials)與授權(quán)碼模式的區(qū)別是申請(qǐng)令牌不再使用授權(quán)碼,而是直接 通過(guò)用戶(hù)名和密碼即可申請(qǐng)令牌。
測(cè)試如下:
Post請(qǐng)求:http://localhost:9001/oauth/token
參數(shù):
grant_type:密碼模式授權(quán)填寫(xiě)password
username:賬號(hào)
password:密碼
并且此鏈接需要使用 http Basic認(rèn)證。
測(cè)試數(shù)據(jù)如下:
(2)校驗(yàn)令牌
Spring Security Oauth2提供校驗(yàn)令牌的端點(diǎn),如下:
Get: http://localhost:9001/oauth/check_token?token=
參數(shù):
token:令牌
使用postman測(cè)試如下:
返回結(jié)果:
{"companyId": null,"userpic": null,"scope": ["app"],"name": null,"utype": null,"active": true,"id": null,"exp": 1990221534,"jti": "5b96666e-436b-4301-91b5-d89f9bbe6edb","client_id": "changgou","username": "szitheima" }exp:過(guò)期時(shí)間,long類(lèi)型,距離1970年的秒數(shù)(new Date().getTime()可得到當(dāng)前時(shí)間距離1970年的毫秒數(shù))。
user_name: 用戶(hù)名
client_id:客戶(hù)端Id,在oauth_client_details中配置
scope:客戶(hù)端范圍,在oauth_client_details表中配置
jti:與令牌對(duì)應(yīng)的唯一標(biāo)識(shí) companyId、userpic、name、utype、
id:這些字段是本認(rèn)證服務(wù)在Spring Security基礎(chǔ)上擴(kuò)展的用戶(hù)身份信息
?
(3)刷新令牌
刷新令牌是當(dāng)令牌快過(guò)期時(shí)重新生成一個(gè)令牌,它于授權(quán)碼授權(quán)和密碼授權(quán)生成令牌不同,刷新令牌不需要授權(quán)碼 也不需要賬號(hào)和密碼,只需要一個(gè)刷新令牌、客戶(hù)端id和客戶(hù)端密碼。
測(cè)試如下: Post:http://localhost:9001/oauth/token
參數(shù):
grant_type: 固定為 refresh_token
refresh_token:刷新令牌(注意不是access_token,而是refresh_token)
刷新令牌成功,會(huì)重新生成新的訪問(wèn)令牌和刷新令牌,令牌的有效期也比舊令牌長(zhǎng)。
刷新令牌通常是在令牌快過(guò)期時(shí)進(jìn)行刷新 。
?
總結(jié)