springboot實現單點登錄_什么是單點登錄,php是如何實現單點登錄的

726e7692742de66f1973e923bcf1bbed.gif

文章來自:php中文網鏈接:https://www.php.cn/php-weizijiaocheng-429869.html
作者:中文網

商務合作:請加微信(QQ):2230304070

11f299cac86d7d95fff60753525a5ae5.png

視頻教程分享

7ad1b66532584982a732efda1ed490cd.png

碼農網:http://www.mano100.cn/rjyfk_url-url.html? ,升級終身會員即可查看網站所有視頻教程。

11f299cac86d7d95fff60753525a5ae5.png

文章正文

7ad1b66532584982a732efda1ed490cd.png

單點登錄SSO(Single Sign On)說得簡單點就是在一個多系統共存的環境下,用戶在一處登錄后,就不用在其他系統中登錄,也就是用戶的一次登錄能得到其他所有系統的信任。單點登錄在大型網站里使用得非常頻繁,例如像阿里巴巴這樣的網站,在網站的背后是成百上千的子系統,用戶一次操作或交易可能涉及到幾十個子系統的協作,如果每個子系統都需要用戶認證,不僅用戶會瘋掉,各子系統也會為這種重復認證授權的邏輯搞瘋掉。實現單點登錄說到底就是要解決如何產生和存儲那個信任,再就是其他系統如何驗證這個信任的有效性,因此要點也就以下幾個:

1、存儲信任

2、驗證信任

只要解決了以上的問題,達到了開頭講得效果就可以說是SSO。最簡單實現SSO的方法就是用Cookie,實現流程如下所示:

e2a00138b27c61893a322a690b7d214e.png

不難發現以上的方案是把信任存儲在客戶端的Cookie里,這種方法雖然實現方便但立馬會讓人質疑兩個問題:

1、Cookie不安全

2、不能跨域免登

對于第一個問題一般都是通過加密Cookie來處理,第二個問題是硬傷,其實這種方案的思路的就是要把這個信任關系存儲在客戶端,要實現這個也不一定只能用Cookie,用flash也能解決,flash的Shared Object API就提供了存儲能力。

一般說來,大型系統會采取在服務端存儲信任關系的做法,實現流程如下所示:

0dd51261c746b8f0572c4863c5ce90e4.png

以上方案就是要把信任關系存儲在單獨的SSO系統(暫且這么稱呼它)里,說起來只是簡單地從客戶端移到了服務端,但其中幾個問題需要重點解決:

1、如何高效存儲大量臨時性的信任數據

2、如何防止信息傳遞過程被篡改

3、如何讓SSO系統信任登錄系統和免登系統

對于第一個問題,一般可以采用類似與memcached的分布式緩存的方案,既能提供可擴展數據量的機制,也能提供高效訪問。

對于第二個問題,一般采取數字簽名的方法,要么通過數字證書簽名,要么通過像md5的方式,這就需要SSO系統返回免登URL的時候對需驗證的參數進行md5加密,并帶上token一起返回,最后需免登的系統進行驗證信任關系的時候,需把這個token傳給SSO系統,SSO系統通過對token的驗證就可以辨別信息是否被改過。對于最后一個問題,可以通過白名單來處理,說簡單點只有在白名單上的系統才能請求生產信任關系,同理只有在白名單上的系統才能被免登錄。

以上是文章全部內容,有需要學習與經驗交流的友友或者進入微信交流群學習與交流的可以加小編為好友咱們一起學習,有問題一起交流,一起進步!前提是你是學技術的。

ccb30ac7f6b441e59d63a5b1ac9d6dc1.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/394188.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394188.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394188.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

背景圖處理,這是個好東西記錄一下

背景圖處理 rgba (),前3個是三原色,第四個參數是透明度轉載于:https://www.cnblogs.com/ChineseLiao/p/7479207.html

python使用GUI(圖形用戶界面)

打開后: File→New File(Ctrl N) 轉載于:https://www.cnblogs.com/ly123456/p/6269859.html

Altium Designer(AD24)新工程復用設計文件圖文教程及視頻演示

🏡《專欄目錄》 目錄 1,概述2,復用方法一視頻演示2.1,創建工程2.2,復用設計文件 3,復用方法二視頻演示4,總結 歡迎點擊瀏覽更多高清視頻演示 1,概述 本文簡述使用AD軟件復用設計文件…

兩點定標法_一種兩點校正紅外熱像儀的非均勻性的模塊及方法

一種兩點校正紅外熱像儀的非均勻性的模塊及方法【技術領域】[0001] 本發明屬于紅外熱成像系統的非均勻性校正領域,特別是一種兩點校正紅外熱像 儀的非均勻性的模塊及方法。【背景技術】[0002] 在過去的幾十年中,紅外探測器件的元數不斷增加,由…

leetcode851. 喧鬧和富有(dfs)

在一組 N 個人(編號為 0, 1, 2, …, N-1)中,每個人都有不同數目的錢,以及不同程度的安靜(quietness)。 為了方便起見,我們將編號為 x 的人簡稱為 "person x "。 如果能夠肯定 perso…

如何選擇正確的容器編排以及如何進行部署

by Michael Douglass邁克爾道格拉斯(Michael Douglass) 如何選擇正確的容器編排以及如何進行部署 (How to choose the right container orchestration and how to deploy it) Running server processes inside containers is here to stay. If your environment is small with…

Oracle 學習筆記(三)

oracle 表查詢 oracle 表基本查詢 在此,基于 scott 用戶存在的 emp,dept 表演示學習。 emp 雇員表 clerk 員工 salesman 銷售 manager 經理 analyst 分析師 president 總裁 mgr 上級的編號 hiredate 入職時間 sal 工資 comm 獎金 deptno 部…

html meta標簽使用總結(轉)

之前學習前端中&#xff0c;對meta標簽的了解僅僅只是這一句。 <meta charset"UTF-8"> 但是打開任意的網站&#xff0c;其head標簽內都有一列的meta標簽。比如我博客的。 但是自己卻很不熟悉&#xff0c;于是把meta標簽加入了寒假學習計劃的最前方。 簡介 在查…

bzoj 4009 接水果 整體二分

Description 先給出一些盤子, 用路徑x-y表示, 有權值 再有Q個詢問, 表示水果, 用路徑x-y表示 如果盤子是水果的子路徑, 可以接住 對于每個水果, 輸出可以接住它的盤子的第k小權 Solution 對于x-lca-y的盤子&#xff0c;水果一定一個在x子樹&#xff0c;一個在y子樹 對于x-lca的…

離散元 python_剛開始學習離散元軟件Yade,有什么建議?

用Yade-DEM 做過博士期間的部分工作&#xff0c;也是從毫無所知到算是入門&#xff0c;分享一點我的學習過程&#xff0c;為那些剛接觸Yade的同學提供些許參考&#xff0c;希望對大家有幫助。0. Yade 簡介Yade 是一個用于離散元分析的開源平臺&#xff0c;是法國Lab 3SR-Grenob…

leetcode529. 掃雷游戲(dfs)

讓我們一起來玩掃雷游戲&#xff01; 給定一個代表游戲板的二維字符矩陣。 ‘M’ 代表一個未挖出的地雷&#xff0c;‘E’ 代表一個未挖出的空方塊&#xff0c;‘B’ 代表沒有相鄰&#xff08;上&#xff0c;下&#xff0c;左&#xff0c;右&#xff0c;和所有4個對角線&#…

redhat6 刪除mysql_Red Hat enterprise linux 6卸載默認安裝的 mysql

因為Red Hat enterprise linux 6 自帶了一個mysql&#xff0c;所以當你安裝新的mysql時&#xff0c;就會提示錯誤如&#xff1a;error&#xff1a;Failed dependencies&#xff1a;MySQL conflicts with mysql-5.1.47-4.el6.i686rmp -qa mysql 可以看到安裝的mysql于是將自帶的…

swift通知欄推送_如何使用Swift使用推送通知構建食品交付應用

swift通知欄推送by Neo Ighodaro由新Ighodaro 如何使用Swift使用推送通知構建食品交付應用 (How to build a food delivery app with push notifications using Swift) A basic understanding of Swift and Node.js is needed to follow this tutorial.要學習本教程&#xff0…

Jenkins持續集成實踐之java項目自動化部署

關于Linux安裝Jenkins可以參考我的這篇博文Ubuntu16.04環境安裝jenkins 1.安裝部署插件 進入插件管理&#xff0c;并搜索該插件Deploy to container Plugin進行安裝 &#xff0c;下載地址為&#xff1a;https://wiki.jenkins-ci.org/display/JENKINS/DeployPlugin 2.安裝完后&a…

云計算時代企業內部IT人員的新定位

本文講的是云計算時代企業內部IT人員的新定位&#xff0c;【IT168 云計算頻道】漸漸的云計算熱起來&#xff0c;但是怎么去嚴格定義云計算&#xff0c;還是沒有一個統一的說法&#xff0c;最常用的就是舉例子的方式來說什么是云計算&#xff0c;最常用來打比方的是電力&#xf…

Java 多線程 筆記 轉自http://www.cnblogs.com/lwbqqyumidi/p/3804883.html

多線程作為Java中很重要的一個知識點&#xff0c; 一.線程的生命周期及五種基本狀態 關于Java中線程的生命周期&#xff0c;首先看一下下面這張較為經典的圖&#xff1a; 上圖中基本上囊括了Java中多線程各重要知識點。掌握了上圖中的各知識點&#xff0c;Java中的多線程也就基…

leetcode207. 課程表(dfs/bfs)

你這個學期必須選修 numCourse 門課程&#xff0c;記為 0 到 numCourse-1 。 在選修某些課程之前需要一些先修課程。 例如&#xff0c;想要學習課程 0 &#xff0c;你需要先完成課程 1 &#xff0c;我們用一個匹配來表示他們&#xff1a;[0,1] 給定課程總量以及它們的先決條件…

r.java是什么_R.java文件介紹

http://blog.chinaunix.net/uid-21411227-id-4133828.html注意&#xff1a;R.java文件不能手動修改。1. HelloWorld工程中的R.java文件解析package com.android.hellworld;public final class R {public static final class attr {}public static final class drawable {public…

python qt 拖拽組件使用方法_Python QT組件庫qtwidgets的使用

雖然Qt提供了不少現成的組件&#xff0c;但是在Python中使用PyQt5或PySide2進行圖形界面程序開發的過程&#xff0c;還是免不了要根據自己的需求組合一些小部件以形成新的自定義組件。最近州的先生在寫一個桌面圖形界面的登錄密碼框的過程中&#xff0c;發現了這樣一個小巧的自…

get與post區別

兩種 HTTP 請求方法&#xff1a;GET 和 POST 在客戶機和服務器之間進行請求-響應時&#xff0c;兩種最常被用到的方法是&#xff1a;GET 和 POST。 GET - 從指定的資源請求數據。POST - 向指定的資源提交要被處理的數據GET 方法 請注意&#xff0c;查詢字符串&#xff08;名稱/…