密碼模式
前面介紹了授權(quán)碼模式和刷新令牌兩種獲取最新令牌的方法喳资,下面來看一下其它模式评架。首先看密碼模式君丁,我們默認(rèn)配置的三種模式中其實就包含密碼模式的支持:
因此我們啟動項目睛蛛,直接使用密碼模式即可,訪問地址是:
參數(shù)有五個蓖扑,分別是:
grant_type:密碼模式值必須為 password
username:用戶名
password:密碼
client_id:客戶端id
client_secret:客戶端秘鑰
訪問示例如下:
密碼模式適用于用戶高度信任的情況唉铜,只有高度信息才能傳用戶名密碼,謹(jǐn)慎使用律杠。
隱藏模式
有些web應(yīng)用是純前端的應(yīng)用潭流,需要允許授權(quán)服務(wù)直接向前端頒發(fā)令牌。這種方式?jīng)]有授權(quán)碼這個中間步驟柜去,所以稱為(授權(quán)碼)"隱藏式"(implicit)灰嫉。訪問鏈接示例如下:
可以看到這種方式比授權(quán)碼模式多了一個scope參數(shù),在使用隱藏模式之前嗓奢,需要授權(quán)服務(wù)支持隱藏模式讼撒,就需要在授權(quán)類型中加上 implicit:
然后將上面的鏈接輸入到瀏覽器,會出現(xiàn)登錄頁面股耽,登錄成功后根盒,鏈接中會直接出現(xiàn)令牌:
注意,令牌的位置是 URL 錨點(fragment)物蝙,而不是查詢字符串(querystring)炎滞,這是因為 OAuth 2.0 允許跳轉(zhuǎn)網(wǎng)址是 HTTP 協(xié)議,因此存在"中間人攻擊"的風(fēng)險诬乞,而瀏覽器跳轉(zhuǎn)時册赛,錨點不會發(fā)到服務(wù)器,就減少了泄漏令牌的風(fēng)險震嫉。
憑證模式
最后一種方式是憑證式(client credentials)森瘪,適用于沒有前端的命令行應(yīng)用,即在命令行下請求令牌票堵。請求地址如下:
請求前扼睬,先在授權(quán)類型中配置憑證模式:
請求結(jié)果示例:
這種方式給出的令牌,是針對第三方應(yīng)用的悴势,而不是針對用戶的窗宇,即有可能多個用戶共享同一個令牌。
代碼地址: https://gitee.com/blueses/spring-boot-security 28
本文由博客一文多發(fā)平臺 OpenWrite 發(fā)布瞳浦!