亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBootSecurity中OAuth2.0簡單示例是怎樣的

發布時間:2021-09-28 09:44:51 來源:億速云 閱讀:94 作者:柒染 欄目:大數據

SpringBootSecurity中OAuth2.0簡單示例是怎樣的,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

OAuth3.0

OAuth 引入了一個授權層,用來分離兩種不同的角色:客戶端和資源所有者。客戶端來申請資源,資源所有者同意以后,資源服務器可以向客戶端頒發令牌。客戶端通過令牌,去請求數據。也就是說,OAuth 的核心就是向第三方應用頒發令牌。而且,OAuth 2.0 規定了四種獲得令牌的流程。你可以選擇最適合自己的那一種,向第三方應用頒發令牌。

下面我們來使用spring cloud security 和 spring cloud oauth3兩個組件來簡單實現授權流程。

授權服務

下面我們來使用spring cloud security 實現一個授權服務,首先來引入依賴:

SpringBootSecurity中OAuth2.0簡單示例是怎樣的

除了一個web組件,只引入了一個spring-cloud-starter-oauth3,這是因為spring cloud下的oauth3組件已經包含了security:

SpringBootSecurity中OAuth2.0簡單示例是怎樣的

首先寫一個正常的登錄功能,application配置文件和啟動類都不用增加特殊配置,主要來配置security配置類:

SpringBootSecurity中OAuth2.0簡單示例是怎樣的

這里面基本沒有特殊的配置,都是前面遇到過的熟悉的配置。有了這個配置類,基本的登錄功能就有了,要想有授權功能,還需要一個授權配置類,授權配置類需要繼承 AuthorizationServerConfigurerAdapter 類,并引入 @EnableAuthorizationServer 注解:

SpringBootSecurity中OAuth2.0簡單示例是怎樣的

首先配置一個客戶端:

SpringBootSecurity中OAuth2.0簡單示例是怎樣的

然后配置token的存儲和管理,此處使用secret作為秘鑰,后面會介紹使用非對稱加密的方式 :

SpringBootSecurity中OAuth2.0簡單示例是怎樣的

上面的token存儲在了內存中,token也可以存儲在數據庫或者redis中。最后配置授權端點的訪問控制:

SpringBootSecurity中OAuth2.0簡單示例是怎樣的

以上就是一個簡答的授權服務。

資源服務

下面來搭建一個資源服務,其實授權和資源服務是可以合二為一的,此處為了清晰,將它們分開。pom中引入的依賴和授權服務是一樣的,同樣,配置文件和啟動類不需要做特殊配置。首先來寫兩個簡單的接口,一個定義為受保護,另一個不受保護:

SpringBootSecurity中OAuth2.0簡單示例是怎樣的

然后定義一個資源服務配置類,需要繼承 ResourceServerConfigurerAdapter 類,并引入 @EnableResourceServer 注解:

SpringBootSecurity中OAuth2.0簡單示例是怎樣的

首先來看令牌驗證的配置:

SpringBootSecurity中OAuth2.0簡單示例是怎樣的

然后來看接口資源的攔截規則:

SpringBootSecurity中OAuth2.0簡單示例是怎樣的

save開頭的可以直接訪問,不會被攔截,/user/save接口會被驗證。

注意上面配置的clientId和secret都是單一的配置死的,如果需要對多客戶端動態進行認真,需要重寫,后面是通過http調用的方式解析訪問令牌(主要是通過訪問授權服務的/oauth/check_token解析)。

測試

我們來根據前面說到的流程測試,首先向授權服務申請一個授權碼:

  • http://localhost:8015/oauth/authorize?client_id=clientId&response_type=code&redirect_uri=http://localhost:8015/

訪問首先會跳轉到登錄頁面:

SpringBootSecurity中OAuth2.0簡單示例是怎樣的

輸入配置中默認的用戶名密碼登錄,然后進入下一個頁面:

SpringBootSecurity中OAuth2.0簡單示例是怎樣的

這個頁面是真正的授權頁面,選擇Approve,點擊按鈕,同意授權,授權碼會通過回調地址獲取,如下圖:

SpringBootSecurity中OAuth2.0簡單示例是怎樣的

然后攜帶授權碼申請訪問令牌,需要訪問下面的地址(需要使用post方式):

  • http://localhost:8015/oauth/token?grant_type=authorization_code&code=授權碼&redirect_uri=http://localhost:8015/&client_id=clientId&client_secret=secret

將授權碼替換上面地址中的授權碼三個字,然后在postman中訪問:

SpringBootSecurity中OAuth2.0簡單示例是怎樣的

其返回結果中,包含access_token參數,就是我們需要的訪問令牌,token_type 參數說明了令牌的類型,一般類型為bearer或者refresh_token可以在訪問令牌過期后向授權服務申請新的令牌,expires_in參數是令牌的有效時間,單位是秒,圖中顯示默認是12個小時。令牌已經得到了,下面來訪問資源接口,首先試一下不受保護的資源:

SpringBootSecurity中OAuth2.0簡單示例是怎樣的

可以看到直接就能訪問,然后訪問受保護的資源接口:

SpringBootSecurity中OAuth2.0簡單示例是怎樣的

得到這樣的結果說明該接口需要認證,我們來使用我們前面得到的令牌來訪問,首先選擇正確的認真協議:

SpringBootSecurity中OAuth2.0簡單示例是怎樣的

然后在右側填寫前面獲取的access_token:

SpringBootSecurity中OAuth2.0簡單示例是怎樣的

然后訪問接口,就能看到受保護的資源通過令牌可以訪問:

SpringBootSecurity中OAuth2.0簡單示例是怎樣的

看完上述內容,你們掌握SpringBootSecurity中OAuth2.0簡單示例是怎樣的的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

叶城县| 湖口县| 河北区| 容城县| 中牟县| 徐汇区| 亳州市| 瓦房店市| 侯马市| 锡林浩特市| 辛集市| 静海县| 青神县| 焦作市| 麻栗坡县| 霞浦县| 长武县| 林口县| 邵东县| 涪陵区| 乌兰浩特市| 福贡县| 观塘区| 临泽县| 昭苏县| 玉龙| 类乌齐县| 阜康市| 汕头市| 泗水县| 南康市| 孝义市| 凤凰县| 无极县| 郧西县| 巴里| 和硕县| 苍山县| 咸阳市| 敖汉旗| 全南县|