成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python Flask單點(diǎn)登錄問題

tuomao / 1295人閱讀

摘要:如果一旦加密算法泄露了,攻擊者可以在本地建立一個(gè)實(shí)現(xiàn)了登錄接口的假冒父應(yīng)用,通過綁定來把子應(yīng)用發(fā)起的請求指向本地的假冒父應(yīng)用,并作出回應(yīng)。

1.
什么是單點(diǎn)登錄?

單點(diǎn)登錄(Single Sign On),簡稱為 SSO,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。SSO的定義是在多個(gè)應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系統(tǒng)。
客戶端持有ID,服務(wù)端持有session,兩者一起用來保持登錄狀態(tài)。客戶端需要用ID來作為憑證,而服務(wù)端需要用session來驗(yàn)證ID的有效性(ID可能過期、可能根本就是偽造的找不到對于的信息、ID下對應(yīng)的客戶端還沒有進(jìn)行登錄驗(yàn)證等)。但是session這東西一開始是每個(gè)server自己獨(dú)有的,豆瓣FM有自己的session、豆瓣讀書有自己的session,而記錄ID的cookie又是不能跨域的。所以,我們要實(shí)現(xiàn)一次登錄一次退出,只需要想辦法讓各個(gè)server的共用一個(gè)session的信息,讓客戶端在各個(gè)域名下都能持有這個(gè)ID就好了。再進(jìn)一步講,只要各個(gè)server拿到同一個(gè)ID,都能有辦法檢驗(yàn)出ID的有效性、并且能得到ID對應(yīng)的用戶信息就行了,也就是能檢驗(yàn)ID。
因此實(shí)現(xiàn)單點(diǎn)登錄說到底就是要解決如何產(chǎn)生ID和存儲(chǔ)那個(gè)信任ID,再就是其他系統(tǒng)如何驗(yàn)證這個(gè)信任的有效性,因此要點(diǎn)也就以下兩個(gè):
存儲(chǔ)信任驗(yàn)證信任
以下是我探究所得的方法

2.
單點(diǎn)登錄的實(shí)現(xiàn)有哪些?

一、以Cookie作為憑證媒介
最簡單的單點(diǎn)登錄實(shí)現(xiàn)方式,是使用cookie作為媒介,存放用戶憑證。用戶登錄父應(yīng)用之后,應(yīng)用返回一個(gè)加密的cookie,當(dāng)用戶訪問子應(yīng)用的時(shí)候,攜帶上這個(gè)cookie,授權(quán)應(yīng)用解密cookie并進(jìn)行校驗(yàn),校驗(yàn)通過則登錄當(dāng)前用戶。


Auth via cookie

不難發(fā)現(xiàn)以上方式把信任存儲(chǔ)在客戶端的Cookie中,這種方式很容易令人質(zhì)疑:Cookie不安全不能跨域?qū)崿F(xiàn)免登對于第一個(gè)問題,通過加密Cookie可以保證安全性,當(dāng)然這是在源代碼不泄露的前提下。如果Cookie的加密算法泄露,攻擊者通過偽造Cookie則可以偽造特定用戶身份,這是很危險(xiǎn)的。對于第二個(gè)問題,更是硬傷。

二、通過JSONP實(shí)現(xiàn)
對于跨域問題,可以使用JSONP實(shí)現(xiàn)。用戶在父應(yīng)用中登錄后,跟Session匹配的Cookie會(huì)存到客戶端中,當(dāng)用戶需要登錄子應(yīng)用的時(shí)候,授權(quán)應(yīng)用訪問父應(yīng)用提供的JSONP接口,并在請求中帶上父應(yīng)用域名下的Cookie,父應(yīng)用接收到請求,驗(yàn)證用戶的登錄狀態(tài),返回加密的信息,子應(yīng)用通過解析返回來的加密信息來驗(yàn)證用戶,如果通過驗(yàn)證則登錄用戶。
這種方式雖然能解決跨域問題,但是安全性其實(shí)跟把信任存儲(chǔ)到Cookie是差不多的。如果一旦加密算法泄露了,攻擊者可以在本地建立一個(gè)實(shí)現(xiàn)了登錄接口的假冒父應(yīng)用,通過綁定Host來把子應(yīng)用發(fā)起的請求指向本地的假冒父應(yīng)用,并作出回應(yīng)。因?yàn)楣粽咄耆梢园凑占用芩惴▉韨卧祉憫?yīng)請求,子應(yīng)用接收到這個(gè)響應(yīng)之后一樣可以通過驗(yàn)證,并且登錄特定用戶。

三、通過頁面重定向的方式
最后一種介紹的方式,是通過父應(yīng)用和子應(yīng)用來回重定向中進(jìn)行通信,實(shí)現(xiàn)信息的安全傳遞。父應(yīng)用提供一個(gè)GET方式的登錄接口,用戶通過子應(yīng)用重定向連接的方式訪問這個(gè)接口,如果用戶還沒有登錄,則返回一個(gè)的登錄頁面,用戶輸入賬號(hào)密碼進(jìn)行登錄。如果用戶已經(jīng)登錄了,則生成加密的Token,并且重定向到子應(yīng)用提供的驗(yàn)證Token的接口,通過解密和校驗(yàn)之后,子應(yīng)用登錄當(dāng)前用戶。


Auth via redirect

這種方式較前面兩種方式,接解決了上面兩種方法暴露出來的安全性問題和跨域的問題,但是并沒有前面兩種方式方便。安全與方便,本來就是一對矛盾。

四、通過CAS構(gòu)建用戶中心進(jìn)行驗(yàn)證
大概想法:通過配置URL的形式,把某些登錄請求發(fā)送到cas驗(yàn)證服務(wù)器上,然后此時(shí)分為兩種情況,一種是沒有攜帶ticket,另一種是攜帶ticket的。
處理第一種情況:拼裝url請求,發(fā)送到服務(wù)器請求ticket,然后返回獲得ticket,便到了第二步處理第二種情況:cas服務(wù)器對于ticket進(jìn)行驗(yàn)證,返回結(jié)果

3.
python中單點(diǎn)登錄以及Flask框架的單點(diǎn)登錄如何實(shí)現(xiàn)?

參考內(nèi)容Flask + PyJWT 實(shí)現(xiàn)基于Json Web Token的用戶認(rèn)證授權(quán)實(shí)現(xiàn)基于json-web-token的用戶認(rèn)證授權(quán))參考內(nèi)容Flask: SSO原理及實(shí)現(xiàn)**

4.
參考內(nèi)容

(1)可以參考flask-sso拓展插件英文文檔**(2)關(guān)于flask的session方面的插件插件

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/40885.html

相關(guān)文章

  • Vue+Flask新手的第一個(gè)圖片分享網(wǎng)站開發(fā)及部署

    摘要:超簡單實(shí)現(xiàn)一個(gè)圖片分享網(wǎng)站及多平臺(tái)部署網(wǎng)站簡介源碼地址這是一個(gè)圖片分享平臺(tái),借鑒的基礎(chǔ)功能和頁面布局并進(jìn)行一點(diǎn)減法的移動(dòng)端網(wǎng)頁,也是我在移動(dòng)端乃至項(xiàng)目的處女作,文章或者項(xiàng)目有問題的地方歡迎大家多多指正先來點(diǎn)圖登錄注冊首頁內(nèi)容發(fā)布評論轉(zhuǎn)發(fā)消息 Vue+Flask超簡單實(shí)現(xiàn)一個(gè)圖片分享網(wǎng)站及多平臺(tái)部署 PicShare 網(wǎng)站簡介 源碼地址 這是一個(gè)圖片分享平臺(tái),借鑒Instagram的...

    tain335 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<