SpringBootSecurity中OAuth2.0簡(jiǎn)單示例是怎樣的,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
創(chuàng)新互聯(lián)主要從事成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)五河,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18980820575
OAuth 引入了一個(gè)授權(quán)層,用來(lái)分離兩種不同的角色:客戶端和資源所有者??蛻舳藖?lái)申請(qǐng)資源,資源所有者同意以后,資源服務(wù)器可以向客戶端頒發(fā)令牌??蛻舳送ㄟ^(guò)令牌,去請(qǐng)求數(shù)據(jù)。也就是說(shuō),OAuth 的核心就是向第三方應(yīng)用頒發(fā)令牌。而且,OAuth 2.0 規(guī)定了四種獲得令牌的流程。你可以選擇最適合自己的那一種,向第三方應(yīng)用頒發(fā)令牌。
下面我們來(lái)使用spring cloud security 和 spring cloud oauth3兩個(gè)組件來(lái)簡(jiǎn)單實(shí)現(xiàn)授權(quán)流程。
下面我們來(lái)使用spring cloud security 實(shí)現(xiàn)一個(gè)授權(quán)服務(wù),首先來(lái)引入依賴:
除了一個(gè)web組件,只引入了一個(gè)spring-cloud-starter-oauth3,這是因?yàn)閟pring cloud下的oauth3組件已經(jīng)包含了security:
首先寫一個(gè)正常的登錄功能,application配置文件和啟動(dòng)類都不用增加特殊配置,主要來(lái)配置security配置類:
這里面基本沒(méi)有特殊的配置,都是前面遇到過(guò)的熟悉的配置。有了這個(gè)配置類,基本的登錄功能就有了,要想有授權(quán)功能,還需要一個(gè)授權(quán)配置類,授權(quán)配置類需要繼承 AuthorizationServerConfigurerAdapter 類,并引入 @EnableAuthorizationServer 注解:
首先配置一個(gè)客戶端:
然后配置token的存儲(chǔ)和管理,此處使用secret作為秘鑰,后面會(huì)介紹使用非對(duì)稱加密的方式 :
上面的token存儲(chǔ)在了內(nèi)存中,token也可以存儲(chǔ)在數(shù)據(jù)庫(kù)或者redis中。最后配置授權(quán)端點(diǎn)的訪問(wèn)控制:
以上就是一個(gè)簡(jiǎn)答的授權(quán)服務(wù)。
下面來(lái)搭建一個(gè)資源服務(wù),其實(shí)授權(quán)和資源服務(wù)是可以合二為一的,此處為了清晰,將它們分開。pom中引入的依賴和授權(quán)服務(wù)是一樣的,同樣,配置文件和啟動(dòng)類不需要做特殊配置。首先來(lái)寫兩個(gè)簡(jiǎn)單的接口,一個(gè)定義為受保護(hù),另一個(gè)不受保護(hù):
然后定義一個(gè)資源服務(wù)配置類,需要繼承 ResourceServerConfigurerAdapter 類,并引入 @EnableResourceServer 注解:
首先來(lái)看令牌驗(yàn)證的配置:
然后來(lái)看接口資源的攔截規(guī)則:
save開頭的可以直接訪問(wèn),不會(huì)被攔截,/user/save接口會(huì)被驗(yàn)證。
注意上面配置的clientId和secret都是單一的配置死的,如果需要對(duì)多客戶端動(dòng)態(tài)進(jìn)行認(rèn)真,需要重寫,后面是通過(guò)http調(diào)用的方式解析訪問(wèn)令牌(主要是通過(guò)訪問(wèn)授權(quán)服務(wù)的/oauth/check_token解析)。
我們來(lái)根據(jù)前面說(shuō)到的流程測(cè)試,首先向授權(quán)服務(wù)申請(qǐng)一個(gè)授權(quán)碼:
http://localhost:8015/oauth/authorize?client_id=clientId&response_type=code&redirect_uri=http://localhost:8015/
訪問(wèn)首先會(huì)跳轉(zhuǎn)到登錄頁(yè)面:
輸入配置中默認(rèn)的用戶名密碼登錄,然后進(jìn)入下一個(gè)頁(yè)面:
這個(gè)頁(yè)面是真正的授權(quán)頁(yè)面,選擇Approve,點(diǎn)擊按鈕,同意授權(quán),授權(quán)碼會(huì)通過(guò)回調(diào)地址獲取,如下圖:
然后攜帶授權(quán)碼申請(qǐng)?jiān)L問(wèn)令牌,需要訪問(wèn)下面的地址(需要使用post方式):
http://localhost:8015/oauth/token?grant_type=authorization_code&code=授權(quán)碼&redirect_uri=http://localhost:8015/&client_id=clientId&client_secret=secret
將授權(quán)碼替換上面地址中的授權(quán)碼三個(gè)字,然后在postman中訪問(wèn):
其返回結(jié)果中,包含access_token參數(shù),就是我們需要的訪問(wèn)令牌,token_type 參數(shù)說(shuō)明了令牌的類型,一般類型為bearer或者refresh_token可以在訪問(wèn)令牌過(guò)期后向授權(quán)服務(wù)申請(qǐng)新的令牌,expires_in參數(shù)是令牌的有效時(shí)間,單位是秒,圖中顯示默認(rèn)是12個(gè)小時(shí)。令牌已經(jīng)得到了,下面來(lái)訪問(wèn)資源接口,首先試一下不受保護(hù)的資源:
可以看到直接就能訪問(wèn),然后訪問(wèn)受保護(hù)的資源接口:
得到這樣的結(jié)果說(shuō)明該接口需要認(rèn)證,我們來(lái)使用我們前面得到的令牌來(lái)訪問(wèn),首先選擇正確的認(rèn)真協(xié)議:
然后在右側(cè)填寫前面獲取的access_token:
然后訪問(wèn)接口,就能看到受保護(hù)的資源通過(guò)令牌可以訪問(wèn):
看完上述內(nèi)容,你們掌握SpringBootSecurity中OAuth2.0簡(jiǎn)單示例是怎樣的的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
文章標(biāo)題:SpringBootSecurity中OAuth2.0簡(jiǎn)單示例是怎樣的
網(wǎng)站鏈接:http://m.newbst.com/article22/pohgcc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、品牌網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站收錄、、網(wǎng)站營(yíng)銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)