基於spring-security-oauth2實現單點登陸(持續更新)


基於spring-security-oauth2-實現單點登陸

文章代碼地址:連接描述能夠下載直接運行,基於springboot2.1.5,springcloud Greenwich版本實現。前面兩篇寫了認證oauth2經過內存
還有jdbc實現認證中心。接下來咱們採用oauth2實現管理系統的單點登陸。html


說到這裏,須要介紹幾個註解:
@EnableAuthorizationServer 該註解用來開啓認證服務,使用該註解代表本身是一個認證服務。
@EnableResourceServer 該註解要用來開啓資源保護,代表本身是資源服務器受認證服務保護。
@EnableOAuth2Sso 該註解表示本身是oauth2客戶端,也即單點登陸客戶端
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true, jsr250Enabled = true) spring-security默
認禁用註解,使用該註解來判斷用戶對某個控制層的方法是否具備訪問權限web


好來,註解介紹完了,閒話少說。咱們開始今天的主題「單點登陸」。 spring

(1)建立sso-client項目,修改maven依賴: 瀏覽器

clipboard.png
由於,是web項目須要添加maven依賴。
(2)在啓動類加上@EnableOAuth2Sso註解,代表本身是客戶端 springboot

clipboard.png
(3)下面進行最重要的,設置配置文件 服務器

clipboard.png
由於,前面幾個配置在以前章節介紹過,這裏只介紹server.servlet.session.cookie.name=OAUTH2SESSION這個配置。
這是個坑,我在沒加這個配置以前,受權成功後,仍是跳轉受權登陸頁碼。認證服務器和瀏覽器控制檯也沒有報錯信息。只好debug一點點差錯。
這裏簡單介紹下如何查閱源碼,首先全局搜索本身的配置
security.oauth2.client.user-authorization-uri=http://localhost:9001/oauth/authorize
由於這個地址是認證服務器請求受權的,因此,請求認證的過濾器確定包含他。搜索的結果以下: cookie

clipboard.png
兩個結果,一個是咱們本身配置的忽略,點開另一個: session

clipboard.png
ok咱們在源碼中找到這個類,一直向上找,能夠找到OAuth2RestTemplate
一樣的,咱們能夠搜索這個地址,查找在認證服務器中是如何認證的。
跑偏了,仍是介紹下這個配置吧,經過這個配置session和認證服務器不同結局。也能夠設置上下文路徑
server.servlet.context-path=/sso-client
(4)調回來,下來咱們建立一個controller文件,用來獲取受權用戶信息: maven

clipboard.png
在template下建立index.html歡迎頁面: spa

clipboard.png
(5)啓動客戶端服務:

clipboard.png
(6)由於,咱們須要請求認證服務器,校驗token,所以認證服務器須要開啓/oauth/token路徑,修改WebSecurityConfig文件添加:

clipboard.png
(7)啓動認證服務,訪問客戶端首頁: http://localhost:9005 以下:

clipboard.png
自動跳轉到認證服務器登陸地址,輸入用戶名: admin 密碼: 123456 登陸

clipboard.png
你能夠把項目修改端口啓動試試,登陸一個另外一個不在須要登陸。


未完待續,下一篇介紹資源服務器和認證服務器的集成。 有問題,請留言。

相關文章
相關標籤/搜索