SpringBootSecurity學習(26)前後端分離版之github單點登入
單點登入(SSO)
關於oauth2.0,最後我們再來學習一下單點登入。前面介紹過單點登入的定義,單點登入(Single Sign On),簡稱為 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。
關於單點登入,springcloud G版本的官方文件地址如下:
- https://cloud.spring.io/spring-cloud-static/Greenwich.SR3/single/spring-cloud.html#_single_sign_on
關於單點登入的例子有很多,最常見的就是我們在百度登入以後,百度網盤,百度知道,百度翻譯等功能網站都會自動登入百度的賬號,還有就是qq或者微信登入以後,其它騰訊的遊戲等app也可以一鍵登入,等等。例子有很多。對於第三方授權的應用,不需要使用單點登入,但是對於同一個企業內的不同服務和軟體之間的賬號共享來說,單點登入是一個必要的功能。
SSO簡單使用github實現
spring cloud oauth對sso是有支援的,而且使用和配置非常簡單。可以使用第三方的授權服務,如GitHub,也可以自己構建授權服務。下面來用github實現一個簡單的sso。
首先要去github上面登記一下,地址如下:
- https://github.com/settings/applications/new
這裡我們不再自己去登記,而是使用官方文件中演示的登記好的id和祕鑰:
clientId和clientSecret分別是:
bd1c0a783ccdd1c9b9e4
1a9030fbca47a5b2c28e92f19050bb77824b5ad1
而sso客戶端的配置正如上面圖片演示的一樣。下面來新建兩個專案,依賴只引入web和oauth:
專案的啟動類中需要加入一個@EnableOAuth2Sso註解:
建立兩個簡單的介面:
最後就是配置檔案的配置,基本上內容和官網的示例一樣:
這裡兩個專案基本一樣,另一個專案的程式碼和配置也是一樣。security不寫任何配置類,使用預設即可。
測試
啟動兩個專案,訪問其中一個的/user介面:
會直接跳轉到github的登入頁面:
可以注意看一下上面位址列中的地址,會非常熟悉。這裡可以輸入自己的github賬號,然後點選登入,就會自動回跳到我們原來訪問的/user地址:
可以看到,我們自己的專案自動登入成功了,並返回了當前的使用者資料,這個使用者其實就是github的賬戶。
現在上面的第一個專案已經登入成功,並訪問了介面,下面來直接訪問第二個專案:
可以看到第二個專案並沒有再跳轉登入,而是直接處於登入狀態,並且賬號資訊與前面專案的一樣。這就是簡單sso的演示。
程式碼地址: https://gitee.com/blueses/spring-boot-security 37 38
本文由部落格一文多發平臺 OpenWrite 釋出!