91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

贺州市| 重庆市| 通城县| 赤城县| 霍邱县| 苏州市| 盐池县| 永川市| 五台县| 松潘县| 敦化市| 盐城市| 鹤峰县| 马边| 邳州市| 弥勒县| 晋中市| 武夷山市| 宕昌县| 松桃| 五原县| 石台县| 金溪县| 新安县| 大丰市| 咸丰县| 泗水县| 巴林右旗| 沁源县| 奎屯市| 时尚| 北碚区| 兴和县| 且末县| 崇左市| 富阳市| 耿马| 江西省| 双柏县| 田东县| 桦甸市|