摘要:如果一旦加密算法泄露了,攻擊者可以在本地建立一個實現了登錄接口的假冒父應用,通過綁定來把子應用發起的請求指向本地的假冒父應用,并作出回應。
1.
什么是單點登錄?
單點登錄(Single Sign On),簡稱為 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。
客戶端持有ID,服務端持有session,兩者一起用來保持登錄狀態。客戶端需要用ID來作為憑證,而服務端需要用session來驗證ID的有效性(ID可能過期、可能根本就是偽造的找不到對于的信息、ID下對應的客戶端還沒有進行登錄驗證等)。但是session這東西一開始是每個server自己獨有的,豆瓣FM有自己的session、豆瓣讀書有自己的session,而記錄ID的cookie又是不能跨域的。所以,我們要實現一次登錄一次退出,只需要想辦法讓各個server的共用一個session的信息,讓客戶端在各個域名下都能持有這個ID就好了。再進一步講,只要各個server拿到同一個ID,都能有辦法檢驗出ID的有效性、并且能得到ID對應的用戶信息就行了,也就是能檢驗ID。
因此實現單點登錄說到底就是要解決如何產生ID和存儲那個信任ID,再就是其他系統如何驗證這個信任的有效性,因此要點也就以下兩個:
存儲信任驗證信任
以下是我探究所得的方法
2.
單點登錄的實現有哪些?
一、以Cookie作為憑證媒介
最簡單的單點登錄實現方式,是使用cookie作為媒介,存放用戶憑證。用戶登錄父應用之后,應用返回一個加密的cookie,當用戶訪問子應用的時候,攜帶上這個cookie,授權應用解密cookie并進行校驗,校驗通過則登錄當前用戶。
Auth via cookie
不難發現以上方式把信任存儲在客戶端的Cookie中,這種方式很容易令人質疑:Cookie不安全不能跨域實現免登對于第一個問題,通過加密Cookie可以保證安全性,當然這是在源代碼不泄露的前提下。如果Cookie的加密算法泄露,攻擊者通過偽造Cookie則可以偽造特定用戶身份,這是很危險的。對于第二個問題,更是硬傷。
二、通過JSONP實現
對于跨域問題,可以使用JSONP實現。用戶在父應用中登錄后,跟Session匹配的Cookie會存到客戶端中,當用戶需要登錄子應用的時候,授權應用訪問父應用提供的JSONP接口,并在請求中帶上父應用域名下的Cookie,父應用接收到請求,驗證用戶的登錄狀態,返回加密的信息,子應用通過解析返回來的加密信息來驗證用戶,如果通過驗證則登錄用戶。
這種方式雖然能解決跨域問題,但是安全性其實跟把信任存儲到Cookie是差不多的。如果一旦加密算法泄露了,攻擊者可以在本地建立一個實現了登錄接口的假冒父應用,通過綁定Host來把子應用發起的請求指向本地的假冒父應用,并作出回應。因為攻擊者完全可以按照加密算法來偽造響應請求,子應用接收到這個響應之后一樣可以通過驗證,并且登錄特定用戶。
三、通過頁面重定向的方式
最后一種介紹的方式,是通過父應用和子應用來回重定向中進行通信,實現信息的安全傳遞。父應用提供一個GET方式的登錄接口,用戶通過子應用重定向連接的方式訪問這個接口,如果用戶還沒有登錄,則返回一個的登錄頁面,用戶輸入賬號密碼進行登錄。如果用戶已經登錄了,則生成加密的Token,并且重定向到子應用提供的驗證Token的接口,通過解密和校驗之后,子應用登錄當前用戶。
Auth via redirect
這種方式較前面兩種方式,接解決了上面兩種方法暴露出來的安全性問題和跨域的問題,但是并沒有前面兩種方式方便。安全與方便,本來就是一對矛盾。
四、通過CAS構建用戶中心進行驗證
大概想法:通過配置URL的形式,把某些登錄請求發送到cas驗證服務器上,然后此時分為兩種情況,一種是沒有攜帶ticket,另一種是攜帶ticket的。
處理第一種情況:拼裝url請求,發送到服務器請求ticket,然后返回獲得ticket,便到了第二步處理第二種情況:cas服務器對于ticket進行驗證,返回結果
3.
python中單點登錄以及Flask框架的單點登錄如何實現?
參考內容Flask + PyJWT 實現基于Json Web Token的用戶認證授權實現基于json-web-token的用戶認證授權)參考內容Flask: SSO原理及實現**
4.
參考內容
(1)可以參考flask-sso拓展插件英文文檔**(2)關于flask的session方面的插件插件
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40885.html
摘要:超簡單實現一個圖片分享網站及多平臺部署網站簡介源碼地址這是一個圖片分享平臺,借鑒的基礎功能和頁面布局并進行一點減法的移動端網頁,也是我在移動端乃至項目的處女作,文章或者項目有問題的地方歡迎大家多多指正先來點圖登錄注冊首頁內容發布評論轉發消息 Vue+Flask超簡單實現一個圖片分享網站及多平臺部署 PicShare 網站簡介 源碼地址 這是一個圖片分享平臺,借鑒Instagram的...
閱讀 1524·2021-11-25 09:43
閱讀 4067·2021-11-15 11:37
閱讀 3199·2021-08-17 10:13
閱讀 3507·2019-08-30 14:16
閱讀 3538·2019-08-26 18:37
閱讀 2495·2019-08-26 11:56
閱讀 1135·2019-08-26 10:42
閱讀 613·2019-08-26 10:39