基於spring-security-oauth2實現單點登入(持續更新)
##基於spring-security-實現資料庫版##
文章程式碼地址:[連結描述][1]可以下載直接執行,基於springboot2.1.5,springcloud Greenwich版本實現。前面兩篇寫了認證oauth2通過記憶體
還有jdbc實現認證中心。接下來我們採用oauth2實現管理系統的單點登入。
說到這裡,需要介紹幾個註解:
@EnableAuthorizationServer 該註解用來開啟認證服務,使用該註解表明自己是一個認證服務。
@EnableResourceServer 該註解要用來開啟資源保護,表明自己是資源伺服器受認證服務保護。
@EnableOAuth2Sso 該註解表示自己是oauth2客戶端,也即單點登入客戶端
spring-security預設禁用註解,使用該註解來判斷使用者對某個控制層的方法是否具有訪問許可權
好來,註解介紹完了,閒話少說。我們開始今天的主題“單點登入”。
(1)建立sso-client專案,修改maven依賴:
因為,是web專案需要新增maven依賴。
(2)在啟動類加上@EnableOAuth2Sso註解,表明自己是客戶端
(3)下面進行最重要的,設定配置檔案
因為,前面幾個配置在之前章節介紹過,這裡只介紹server.servlet.session.cookie.name=OAUTH2SESSION這個配置。
這裡簡單介紹下如何查閱原始碼,首先全域性搜尋自己的配置
security.oauth2.client.user-authorization-uri=http://localhost:9001/oauth/authorize 因為這個地址是認證伺服器請求授權的,所以,請求認證的過濾器肯定包含他。搜尋的結果如下:
兩個結果,一個是我們自己配置的忽略,點開另外一個:
ok我們在原始碼中找到這個類,一直向上找,可以找到OAuth2RestTemplate
同樣的,我們可以搜尋這個地址,查詢在認證伺服器中是如何認證的。
server.servlet.context-path=/sso-client
(4)調回來,下來我們建立一個controller檔案,用來獲取授權使用者資訊:
在template下建立index.html歡迎頁面:
(5)啟動客戶端服務:
(6)因為,我們需要請求認證伺服器,校驗token,因此認證伺服器需要開啟/oauth/token路徑,修改WebSecurityConfig檔案新增:
(7)啟動認證服務,訪問客戶端首頁: http://localhost:9005 如下:
自動跳轉到認證伺服器登入地址,輸入使用者名稱: admin 密碼: 123456 登入
你可以把專案修改埠啟動試試,登入一個另一個不在需要登入。
未完待續,下一篇介紹資源伺服器和認證伺服器的整合。 有