最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一個注解搞定Spring Security基于Oauth2的SSO單點登錄功能

 更新時間:2021年09月28日 09:00:26   作者:zlt2000  
本文主要介紹 同域 和 跨域 兩種不同場景單點登錄的實現(xiàn)原理,并使用 Spring Security 來實現(xiàn)一個最簡單的跨域 SSO客戶端。對Spring Security基于Oauth2的SSO單點登錄功能感興趣的朋友一起看看吧

一、說明

單點登錄顧名思義就是在多個應用系統(tǒng)中,只需要登錄一次,就可以訪問其他相互信任的應用系統(tǒng),免除多次登錄的煩惱。本文主要介紹 同域跨域 兩種不同場景單點登錄的實現(xiàn)原理,并使用 Spring Security 來實現(xiàn)一個最簡單的跨域 SSO客戶端 。

二、原理說明

單點登錄主流都是基于共享 cookie 來實現(xiàn)的,下面分別介紹 同域跨域 下的兩種場景具體怎樣實現(xiàn)共享 cookie

2.1. 同域單點登錄

適用場景:都是企業(yè)自己的系統(tǒng),所有系統(tǒng)都使用同一個一級域名通過不同的二級域名來區(qū)分。

舉個例子:公司有一個一級域名為 zlt.com ,我們有三個系統(tǒng)分別是:門戶系統(tǒng)(sso.zlt.com)、應用1(app1.zlt.com)和應用2(app2.zlt.com),需要實現(xiàn)系統(tǒng)之間的單點登錄,實現(xiàn)架構如下:

核心原理:

  • 門戶系統(tǒng)設置 Cookiedomain 為一級域名也就是 zlt.com,這樣就可以共享門戶的 Cookie 給所有的使用該域名(xxx.zlt.com)的系統(tǒng)
  • 使用 Spring Session 等技術讓所有系統(tǒng)共享 Session
  • 這樣只要門戶系統(tǒng)登錄之后無論跳轉應用1或者應用2,都能通過門戶 Cookie 中的 sessionId 讀取到 Session 中的登錄信息實現(xiàn)單點登錄

2.2. 跨域單點登錄

單點登錄之間的系統(tǒng)域名不一樣,例如第三方系統(tǒng)。由于域名不一樣不能共享 Cookie 了,這樣就需要通過一個單獨的授權服務(UAA)來做統(tǒng)一登錄,并基于共享UAA的 Cookie 來實現(xiàn)單點登錄。

舉個例子:有兩個系統(tǒng)分別是:應用1(webApp.com)和應用2(zlt.com)需要實現(xiàn)單點登錄,另外有一個UAA授權中心(sso.com),實現(xiàn)架構如下:

核心原理:

  • 訪問系統(tǒng)1判斷未登錄,則跳轉到UAA系統(tǒng)請求授權
  • 在UAA系統(tǒng)域名 sso.com 下的登錄地址中輸入用戶名/密碼完成
  • 登錄登錄成功后UAA系統(tǒng)把登錄信息保存到 Session 中,并在瀏覽器寫入域為 sso.comCookie
  • 訪問系統(tǒng)2判斷未登錄,則跳轉到UAA系統(tǒng)請求授權
  • 由于是跳轉到UAA系統(tǒng)的域名 sso.com 下,所以能通過瀏覽器中UAA的 Cookie 讀取到 Session 中之前的登錄信息完成單點登錄

2.3. 基于Oauth2的跨域單點登錄流程

關于Oauth2的授權碼模式這里就不做介紹了,自行找資料了解

三、Spring Security實現(xiàn)

Oauth2單點登錄除了需要授權中心完成統(tǒng)一登錄/授權邏輯之外

基于 Spring Security 實現(xiàn)的UUA統(tǒng)一授權中心可以參考:https://gitee.com/zlt2000/microservices-platform/tree/master/zlt-uaa

各個系統(tǒng)本身(sso客戶端)也需要實現(xiàn)以下邏輯:

  • 攔截請求判斷登錄狀態(tài)
  • UAA授權中心 通過 Oauth2授權碼模式 交互完成登錄/單點登錄
  • 保存用戶登錄信息

以上邏輯只需使用一個 @EnableOAuth2Sso 注解即可實現(xiàn)

SpringBoot配置如下:

下圖是訪問 sso客戶端@EnableOAuth2Sso 注解與 UAA授權中心 通過 Oauth2授權碼模式 交互完成單點登錄的步驟

請結合上面單點時序圖中單點登錄系統(tǒng)2的1~5步

PS:如果系統(tǒng)用的不是 Spring Security 怎么辦?理解原理自行實現(xiàn)

四、demo下載地址

https://gitee.com/zlt2000/microservices-platform/tree/master/zlt-demo/sso-demo

到此這篇關于一個注解搞定Spring Security基于Oauth2的SSO單點登錄功能的文章就介紹到這了,更多相關Spring Security 單點登錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 淺析SpringBoot2.4 靜態(tài)資源加載問題

    淺析SpringBoot2.4 靜態(tài)資源加載問題

    這篇文章主要介紹了SpringBoot2.4 靜態(tài)資源加載問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 如何查看java進程內(nèi)存占用情況

    如何查看java進程內(nèi)存占用情況

    這篇文章主要介紹了如何查看java進程內(nèi)存占用情況問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Spring MVC傳遞接收參數(shù)方式小結

    Spring MVC傳遞接收參數(shù)方式小結

    大家在開發(fā)中經(jīng)常會用到Spring MVC Controller來接收請求參數(shù),主要常用的接收方式就是通過實體對象以及形參等方式、有些用于GET請求,有些用于POST請求,有些用于兩者,下面介紹幾種常見的Spring MVC傳遞接收參數(shù)的方式
    2021-11-11
  • Java中equals()知識點總結

    Java中equals()知識點總結

    在本篇文章里小編給大家分享的是關于Java中equals()知識點總結內(nèi)容,需要的朋友們可以學習參考下。
    2020-03-03
  • Hibernate之CRUD操作實踐

    Hibernate之CRUD操作實踐

    這篇文章主要介紹了Hibernate之CRUD操作實踐,本文主要告訴讀者Hibernate是什么,為什么要使用HibernateHibernate的優(yōu)缺點,Hibernate的基礎實例應用。需要的朋友可以參考下
    2018-11-11
  • java數(shù)據(jù)類型轉換陷阱包括列表陷阱

    java數(shù)據(jù)類型轉換陷阱包括列表陷阱

    這篇文章主要介紹了java數(shù)據(jù)類型轉換的一些陷阱,包括基本數(shù)據(jù)類型轉換列表陷阱,基本上這一篇就把常見的問題就給大家分享一下
    2020-10-10
  • Java生成范圍內(nèi)隨機整數(shù)的三種方法

    Java生成范圍內(nèi)隨機整數(shù)的三種方法

    在Java中生成隨機數(shù)的場景有很多,下面這篇文章主要給大家介紹了關于Java生成范圍內(nèi)隨機整數(shù)的三種方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • 初識sa-token及登錄授權簡單實現(xiàn)

    初識sa-token及登錄授權簡單實現(xiàn)

    這篇文章主要為大家介紹了sa-token及登錄授權簡單實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Java中逆序遍歷List集合的實現(xiàn)

    Java中逆序遍歷List集合的實現(xiàn)

    本文主要介紹了Java中逆序遍歷List集合的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • Java中Calendar日歷類型常見方法詳解

    Java中Calendar日歷類型常見方法詳解

    Calendar是Java中常用的時間處理工具之一,它提供了很多日歷類型常見方法,下面是一些常用的方法及對應的代碼和運行結果,感興趣的朋友一起看看吧
    2023-11-11

最新評論

东乡族自治县| 沁阳市| 大石桥市| 白河县| 龙口市| 三亚市| 辽中县| 安义县| 哈尔滨市| 四会市| 阿拉善左旗| 夏邑县| 肇州县| 湾仔区| 晋宁县| 莱芜市| 铜川市| 桑日县| 醴陵市| 三亚市| 无锡市| 霞浦县| 正蓝旗| 皋兰县| 衡山县| 秦皇岛市| 内江市| 鹤岗市| 南岸区| 雷波县| 新野县| 湟中县| 饶阳县| 云龙县| 天镇县| 平顶山市| 富宁县| 侯马市| 无为县| 云梦县| 台东市|