黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 職業(yè)指南 互聯(lián)網(wǎng)高頻出現(xiàn)的單點(diǎn)登錄面試題

互聯(lián)網(wǎng)高頻出現(xiàn)的單點(diǎn)登錄面試題

更新時(shí)間:2022-12-20 14:33:45 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1560次

單點(diǎn)登錄多處都能夠?qū)嵱茫诓煌膽?yīng)用環(huán)境下,可以采用不同的單點(diǎn)登錄實(shí)現(xiàn)方案來滿足需求,為此掌握這類相關(guān)的知識(shí)點(diǎn)也能夠?qū)ξ覀內(nèi)蘸蟮拿嬖噹砗艽蟮膸椭?/p>

單點(diǎn)登錄面試題

一、共享Session

共享Session可謂是實(shí)現(xiàn)單點(diǎn)登錄最直接、最簡(jiǎn)單的方式。將用戶認(rèn)證信息保存于Session中,即以Session內(nèi)存儲(chǔ)的值為用戶憑證,這在單個(gè)站點(diǎn)內(nèi)使用是很正常也很容易實(shí)現(xiàn)的,而在用戶驗(yàn)證、用戶信息管理與業(yè)務(wù)應(yīng)用分離的場(chǎng)景下即會(huì)遇到單點(diǎn)登錄的問題,在應(yīng)用體系簡(jiǎn)單,子系統(tǒng)很少的情況下,可以考慮采用Session共享的方法來處理這個(gè)問題。

這個(gè)架構(gòu)我使用了基于Redis的Session共享方案。將Session存儲(chǔ)于Redis上,然后將整個(gè)系統(tǒng)的全局Cookie Domain設(shè)置于頂級(jí)域名上,這樣SessionID就能在各個(gè)子系統(tǒng)間共享。分布式Session共享解決方案,這篇推薦大家看下。

這個(gè)方案存在著嚴(yán)重的擴(kuò)展性問題,首先,ASP.NET的Session存儲(chǔ)必須為SessionStateItemCollection對(duì)象,而存儲(chǔ)的結(jié)構(gòu)是經(jīng)過序列化后經(jīng)過加密存儲(chǔ)的。

并且當(dāng)用戶訪問應(yīng)用時(shí),他首先做的就是將存儲(chǔ)容器里的所有內(nèi)容全部取出,并且反序列化為SessionStateItemCollection對(duì)象。

這就決定了他具有以下約束:

1.Session中所涉及的類型必須是子系統(tǒng)中共同擁有的(即程序集、類型都需要一致),這導(dǎo)致Session的使用受到諸多限制;

2.跨頂級(jí)域名的情況完全無法處理;

二、基于OpenId的單點(diǎn)登錄

這種單點(diǎn)登錄將用戶的身份標(biāo)識(shí)信息簡(jiǎn)化為OpenId存放于客戶端,當(dāng)用戶登錄某個(gè)子系統(tǒng)時(shí),將OpenId傳送到服務(wù)端,服務(wù)端根據(jù)OpenId構(gòu)造用戶驗(yàn)證信息,多用于C/S與B/S相結(jié)合的系統(tǒng),流程如下:

由上圖可以看到,這套單點(diǎn)登錄依賴于OpenId的傳遞,其驗(yàn)證的基礎(chǔ)在于OpenId的存儲(chǔ)以及發(fā)送。

1.當(dāng)用戶第一次登錄時(shí),將用戶名密碼發(fā)送給驗(yàn)證服務(wù);

2.驗(yàn)證服務(wù)將用戶標(biāo)識(shí)OpenId返回到客戶端;

3.客戶端進(jìn)行存儲(chǔ);

4.訪問子系統(tǒng)時(shí),將OpenId發(fā)送到子系統(tǒng);

5.子系統(tǒng)將OpenId轉(zhuǎn)發(fā)到驗(yàn)證服務(wù);

6.驗(yàn)證服務(wù)將用戶認(rèn)證信息返回給子系統(tǒng);

7.子系統(tǒng)構(gòu)建用戶驗(yàn)證信息后將授權(quán)后的內(nèi)容返回給客戶端。

這套單點(diǎn)登錄驗(yàn)證機(jī)制的主要問題在于他基于C/S架構(gòu)下將用戶的OpenId存儲(chǔ)于客戶端,在子系統(tǒng)之間發(fā)送OpenId,而B/S模式下要做到這一點(diǎn)就顯得較為困難。為了處理這個(gè)問題我們將引出下一種方式,這種方式將解決B/S模式下的OpenId的存儲(chǔ)、傳遞問題。

三、基于Cookie的OpenId存儲(chǔ)方案

我們知道,Cookie的作用在于充當(dāng)一個(gè)信息載體在Server端和Browser端進(jìn)行信息傳遞,而Cookie一般是以域名為分割的,例如a.xxx.com與b.xxx.com的Cookie是不能互相訪問的,但是子域名是可以訪問上級(jí)域名的Cookie的。即a.xxx.com和b.xxx.com是可以訪問xxx.com下的Cookie的,于是就能將頂級(jí)域名的Cookie作為OpenId的載體。

驗(yàn)證步驟和上第二個(gè)方法非常相似:

1、 在提供驗(yàn)證服務(wù)的站點(diǎn)里登錄;

2、 將OpenId寫入頂級(jí)域名Cookie里;

3、 訪問子系統(tǒng)(Cookie里帶有OpenId)

4、 子系統(tǒng)取出OpenId通過并向驗(yàn)證服務(wù)發(fā)送OpenId

5、 返回用戶認(rèn)證信息

6、 返回授權(quán)后的內(nèi)容

在以上兩種方法中我們都可以看到通過OpenId解耦了Session共享方案中的類型等問題,并且構(gòu)造用戶驗(yàn)證信息將更靈活,子系統(tǒng)間的驗(yàn)證是相互獨(dú)立的,但是在第三種方案里,我們基于所有子系統(tǒng)都是同一個(gè)頂級(jí)域名的假設(shè),而在實(shí)際生產(chǎn)環(huán)境里有多個(gè)域名是很正常的事情,那么就不得不考慮跨域問題究竟如何解決。

四、B/S多域名環(huán)境下的單點(diǎn)登錄處理

在多個(gè)頂級(jí)域名的情況下,我們將無法讓各個(gè)子系統(tǒng)的OpenId共享。處理B/S環(huán)境下的跨域問題,我們首先就應(yīng)該想到JSONP的方案。

驗(yàn)證步驟如下:

1、 用戶通過登錄子系統(tǒng)進(jìn)行用戶登錄;

2、 用戶登錄子系統(tǒng)記錄了用戶的登錄狀態(tài)、OpenId等信息;

3、 用戶使用業(yè)務(wù)子系統(tǒng);

4、 若用戶未登錄業(yè)務(wù)子系統(tǒng)則將用戶跳轉(zhuǎn)至用戶登錄子系統(tǒng);

5、 用戶子系統(tǒng)通過JSONP接口將用戶OpenId傳給業(yè)務(wù)子系統(tǒng);

6、 業(yè)務(wù)子系統(tǒng)通過OpenId調(diào)用驗(yàn)證服務(wù);

7、 驗(yàn)證服務(wù)返回認(rèn)證信息、業(yè)務(wù)子系統(tǒng)構(gòu)造用戶登錄憑證;(此時(shí)用戶客戶端已經(jīng)與子業(yè)務(wù)系統(tǒng)的驗(yàn)證信息已經(jīng)一一對(duì)應(yīng))

8、 將用戶登錄結(jié)果返回用戶登錄子系統(tǒng),若成功登錄則將用戶跳轉(zhuǎn)回業(yè)務(wù)子系統(tǒng);

9、 將授權(quán)后的內(nèi)容返回客戶端;

五、安全問題

經(jīng)過以上步驟,跨域情況下的單點(diǎn)登錄問題已經(jīng)可以得到解決。而在整個(gè)開發(fā)過程初期,我們采用用戶表中紀(jì)錄一個(gè)OpenId字段來保存用戶OpenId,而這個(gè)機(jī)制下很明顯存在一些安全性、擴(kuò)展性問題。這個(gè)擴(kuò)展性問題主要體現(xiàn)在一個(gè)方面:OpenId的安全性和用戶體驗(yàn)的矛盾。

整個(gè)單點(diǎn)登錄的機(jī)制決定了OpenId是會(huì)出現(xiàn)在客戶端的,所以O(shè)penId需要有過期機(jī)制,假如用戶在一個(gè)終端登錄的話可以選擇在用戶每次登錄或者每次退出時(shí)刷新OpenId,而在多終端登錄的情況下就會(huì)出現(xiàn)矛盾:當(dāng)一個(gè)終端刷新了OpenId之后其他終端將無法正常授權(quán)。

而最終,我采用了單用戶多OpenId的解決方案。每次用戶通過用戶名/密碼登錄時(shí),產(chǎn)生一個(gè)OpenId保存在Redis里,并且設(shè)定過期時(shí)間,這樣多個(gè)終端登錄就會(huì)有多個(gè)OpenId與之對(duì)應(yīng),不再會(huì)存在一個(gè)OpenId失效所有終端驗(yàn)證都失效的情況。

以上就是“互聯(lián)網(wǎng)高頻出現(xiàn)的單點(diǎn)登錄面試題”,你能回答上來嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動(dòng)力節(jié)點(diǎn)Java官網(wǎng)。

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 日日碰狠狠添天天爽五月婷 | 亚洲 欧美 日韩在线一区 | 国产高清在线精品二区一 | 日日摸夜夜添夜夜添影院视频 | 成人18毛片 | 成人一级视频 | 国产日韩视频 | 看真人一级毛多毛片 | 男人下面进女人下面视频免费 | 国产精品美女视视频专区 | 中文字幕日韩一区二区三区不 | 精品国产高清自在线一区二区三区 | 蜜桃视频成a人v在线 | 成人性生交大片免费看午夜a | 国产专区在线 | 日韩中文字幕网 | 北条麻妃国产九九九精品视频 | 在线观看国产视频 | 亚洲国产第一区二区香蕉 | 日韩午夜视频在线观看 | 中文字幕精品一区二区日本 | 成人午夜视频免费看欧美 | 午夜dj免费高清在线观看影院 | 美国一级毛片免费看成人 | 国产精品麻豆高清在线观看 | 亚洲国产激情 | 男女一级爽爽快视频 | 一区二区三区四区在线视频 | 5x性区m免费毛片视频看看 | 精品在线一区二区三区 | 成人视品 | 爽爽爽爽爽爽爽太爽了免费观看 | 国产成人ae在线观看网站站 | 亚洲成人黄色在线观看 | 国产第二十三页浮力影院 | 青青成人福利国产在线视频 | 美女视频黄.免费网址 | 亚洲羞羞视频 | 天天综合天天综合色在线 | 亚洲欧美一区二区三区国产精品 | 欧美高清一区二区三区欧美 |