單點(diǎn)登錄(SSO)是指一個(gè)用戶(hù)身份只需進(jìn)行一次鑒權(quán)便可以訪(fǎng)問(wèn)所有經(jīng)授權(quán)的資源,而不需要多次認(rèn)證。SSO機(jī)制能夠減少人為錯(cuò)誤,同時(shí)提高整個(gè)系統(tǒng)的安全性。雖然SSO很有價(jià)值,但是它的實(shí)現(xiàn)并不容易,因?yàn)榈侥壳盀橹惯€沒(méi)有一種用戶(hù)身份驗(yàn)證的統(tǒng)一標(biāo)準(zhǔn)。IBM WebSphere Portal服務(wù)器提供了各種手段使SSO的實(shí)現(xiàn)簡(jiǎn)單化、安全化、有效化。
創(chuàng)新互聯(lián)建站專(zhuān)注為客戶(hù)提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、雁塔網(wǎng)絡(luò)推廣、微信小程序開(kāi)發(fā)、雁塔網(wǎng)絡(luò)營(yíng)銷(xiāo)、雁塔企業(yè)策劃、雁塔品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪(fǎng)、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供雁塔建站搭建服務(wù),24小時(shí)服務(wù)熱線(xiàn):13518219792,官方網(wǎng)址:jinyejixie.com
通常會(huì)有外置代理和內(nèi)置代理兩種方法。
1.外置代理
在有些情況下,可以使用一種類(lèi)似中介的代理進(jìn)程,該進(jìn)程處于用戶(hù)和應(yīng)用程序之間,如圖1-1所示。當(dāng)用戶(hù)被應(yīng)用程序要求提供×××明時(shí),代理進(jìn)程從用戶(hù)資料庫(kù)中得到用戶(hù)的信用狀,并送給應(yīng)用程序。信用狀相當(dāng)于一個(gè)令牌,它只有用戶(hù)的身份信息,而沒(méi)有用戶(hù)的密碼憑證。換句話(huà)說(shuō),使用外置代理實(shí)現(xiàn)單點(diǎn)登錄,被集成的Web應(yīng)用系統(tǒng)是不再驗(yàn)證該用戶(hù)在Web應(yīng)用系統(tǒng)中的密碼的。它認(rèn)為,只要你是Portal的合法用戶(hù)并且成功登錄了Portal,你只需告訴我你的身份跟角色,我就認(rèn)為你是該Web系統(tǒng)中可以使用授權(quán)信息的合法用戶(hù)了。
圖1-1 門(mén)戶(hù)服務(wù)器進(jìn)行身份驗(yàn)證過(guò)程——Web應(yīng)用沒(méi)有提供Authentication API的情況
①用戶(hù)登錄到門(mén)戶(hù)服務(wù)器,身份驗(yàn)證服務(wù)對(duì)用戶(hù)進(jìn)行身份驗(yàn)證。
②驗(yàn)證通過(guò),建立用戶(hù)信用狀,并請(qǐng)求建立用戶(hù)默認(rèn)桌面。
③代理程序使用用戶(hù)信用狀,并發(fā)送請(qǐng)求給目錄服務(wù),要求得到Web應(yīng)用的用戶(hù)名和口令。
④得到用戶(hù)名和權(quán)限信息。
⑤代理程序使用它們進(jìn)入Web應(yīng)用并依據(jù)權(quán)限信息得到應(yīng)用數(shù)據(jù)。
⑥代理程序?qū)⒌玫降臄?shù)據(jù)格式化后生成用戶(hù)默認(rèn)桌面,應(yīng)用程序的內(nèi)容以門(mén)戶(hù)Channel的形式展現(xiàn)。
⑦將生成的桌面?zhèn)魉徒o用戶(hù)。
上面的情況適用于Web應(yīng)用沒(méi)有提供Authentication API的情況,對(duì)于提供Authentication API的Web應(yīng)用(如Lotus Notes),則多出來(lái)一步,即第4步:鑒權(quán)。用戶(hù)在Web應(yīng)用中的用戶(hù)名和密碼必須事先通過(guò)加密存儲(chǔ)機(jī)制存儲(chǔ)到Portal平臺(tái),此時(shí)代理程序建立的信用狀同時(shí)包含了此用戶(hù)在該Web應(yīng)用系統(tǒng)中的密碼。代理程序攜帶此用戶(hù)的用戶(hù)名和密碼調(diào)用Web驗(yàn)證服務(wù)實(shí)現(xiàn)認(rèn)證過(guò)程,認(rèn)證完成后,至于此用戶(hù)在該Web系統(tǒng)中到底有哪些權(quán)限,這就由接下來(lái)的Web系統(tǒng)去執(zhí)行了,因?yàn)榇藭r(shí)此用戶(hù)已經(jīng)通過(guò)調(diào)用驗(yàn)證服務(wù)的手段成功登錄了該Web應(yīng)用系統(tǒng)。如圖1-2所示。
圖1-2 門(mén)戶(hù)服務(wù)器進(jìn)行身份驗(yàn)證過(guò)程——Web應(yīng)用提供Authentication API的情況
①用戶(hù)登錄門(mén)戶(hù)服務(wù)器。
②請(qǐng)求建立用戶(hù)默認(rèn)桌面。
③代理程序使用Portal Token并批準(zhǔn)使用Web應(yīng)用的Authentication API進(jìn)行用戶(hù)身份驗(yàn)證。所使用的用戶(hù)名與登錄門(mén)戶(hù)服務(wù)器時(shí)使用的一樣,或者是一個(gè)映射值,映射表應(yīng)存放在門(mén)戶(hù)服務(wù)器的Profile中。
④進(jìn)行用戶(hù)鑒權(quán)。
⑤鑒權(quán)成功。
⑥代理程序使用Web應(yīng)用API 獲取數(shù)據(jù)。
⑦代理程序?qū)⒌玫降臄?shù)據(jù)格式化后生成用戶(hù)默認(rèn)桌面,應(yīng)用程序的內(nèi)容以門(mén)戶(hù)Channel的形式展現(xiàn)。
⑧將生成的桌面?zhèn)魉徒o用戶(hù)。
上面所提到的代理程序,可以通過(guò)IBM WebSphere Portal提供的API編寫(xiě)的 Servlet程序?qū)崿F(xiàn)。這個(gè) Servlet 程序?qū)⒂脩?hù)的信用狀傳遞給應(yīng)用程序,并將用戶(hù)重定向到應(yīng)用的主頁(yè)面。
外置代理的優(yōu)點(diǎn):
— 啟動(dòng)投資相對(duì)較少。
缺點(diǎn):
— 不利于系統(tǒng)管理和維護(hù)。
— 對(duì)系統(tǒng)總體性能有影響。
— 不支持跨域的SSO。
2.內(nèi)置代理
內(nèi)置代理方法是指利用策略管理軟件,即Identity 服務(wù)器軟件。策略管理軟件的工作原理是,在Web服務(wù)器上安插一個(gè)代理模塊(Agent Module),該模塊與 Identity 服務(wù)器共同負(fù)責(zé)用戶(hù)身份驗(yàn)證和授權(quán)信息。
要將策略管理軟件與Portal 服務(wù)器進(jìn)行集成,可以將策略代理模塊安裝在內(nèi)嵌于Portal服務(wù)器中的Web服務(wù)器上,并使用Portal服務(wù)器提供的API,基于策略管理軟件的Session創(chuàng)建過(guò)程生成一個(gè)有效的Portal 服務(wù)器Session。這樣,用戶(hù)可以在策略管理系統(tǒng)的控制下訪(fǎng)問(wèn)任何Web應(yīng)用。
內(nèi)置代理的優(yōu)點(diǎn):
— 通過(guò)Identity服務(wù)器及其Web代理模塊可以安全、有效地控制用戶(hù)身份驗(yàn)證和資源訪(fǎng)問(wèn)。
— 提供集中的訪(fǎng)問(wèn)控制管理,增強(qiáng)大型復(fù)雜應(yīng)用系統(tǒng)的可管理性和效率。
— 為系統(tǒng)開(kāi)發(fā)人員提供一種簡(jiǎn)單的方法對(duì)集中化的目錄資源進(jìn)行訪(fǎng)問(wèn),易于擴(kuò)展。
— 通過(guò)Extranet Web Agents,可以無(wú)縫地集成Web應(yīng)用。
— 具有支持百萬(wàn)級(jí)用戶(hù)的良好系統(tǒng)擴(kuò)展性。
— 保護(hù)投資。
— 支持跨域的SSO。
從邏輯概念上看,Identity服務(wù)器作為企業(yè)核心的應(yīng)用訪(fǎng)問(wèn)控制器,而Portal服務(wù)器則是一個(gè)內(nèi)容聚合器,聚合由Identity服務(wù)器保護(hù)的應(yīng)用。同時(shí),Portal服務(wù)器還作為企業(yè)內(nèi)部安全的應(yīng)用訪(fǎng)問(wèn)轉(zhuǎn)送器。使用內(nèi)置代理實(shí)現(xiàn)Portal與Web應(yīng)用系統(tǒng)的原理及過(guò)程如下,我們分12個(gè)步驟來(lái)介紹。
①用戶(hù)訪(fǎng)問(wèn)門(mén)戶(hù)網(wǎng)關(guān)。
②門(mén)戶(hù)網(wǎng)關(guān)檢查當(dāng)前IPS Session是否包含有效的Cookie,如果不包含(即Session還未建立),門(mén)戶(hù)網(wǎng)關(guān)則將信息包傳給門(mén)戶(hù)服務(wù)器的身份驗(yàn)證模塊。
③服務(wù)器的身份驗(yàn)證模塊將信息包轉(zhuǎn)發(fā)給Identity服務(wù)器的代理模塊。
④代理模塊給用戶(hù)發(fā)送一個(gè)經(jīng)過(guò)定制的登錄頁(yè)面(此頁(yè)面顯示使用Identity服務(wù)器進(jìn)行身份驗(yàn)證)。
⑤用戶(hù)輸入用戶(hù)名/口令(或其他身份信息),并返回給代理模塊。
⑥代理模塊將該信息發(fā)送給Identity 服務(wù)器。
⑦Identity服務(wù)器驗(yàn)證用戶(hù)身份(查詢(xún)存儲(chǔ)用戶(hù)信息的目錄數(shù)據(jù)庫(kù))。
⑧驗(yàn)證成功,Identity服務(wù)器生成Identity Cookie(包含驗(yàn)證成功等信息),并發(fā)送給代理模塊。
⑨代理模塊存儲(chǔ)Identity Cookie,并調(diào)用門(mén)戶(hù)服務(wù)器的身份驗(yàn)證模塊使Session有效(生成一個(gè)Portal Session)。
⑩門(mén)戶(hù)服務(wù)器的身份驗(yàn)證模塊將Identity Session和Portal Session發(fā)送給用戶(hù)瀏覽器。
?門(mén)戶(hù)網(wǎng)關(guān)保存Portal Session,使用戶(hù)的Session生效。
?門(mén)戶(hù)網(wǎng)關(guān)給用戶(hù)發(fā)送門(mén)戶(hù)首頁(yè)。
一旦身份驗(yàn)證流程完成,用戶(hù)不需要重新認(rèn)證就可以訪(fǎng)問(wèn)由門(mén)戶(hù)服務(wù)器及Identity服務(wù)器保護(hù)的任何資源和應(yīng)用。
3.頁(yè)面流方式實(shí)現(xiàn)單點(diǎn)登錄
頁(yè)面流方式的單點(diǎn)登錄,指的是用戶(hù)成功登錄Portal后,在業(yè)務(wù)系統(tǒng)中用戶(hù)每調(diào)用一次Web系統(tǒng)的頁(yè)面,Web系統(tǒng)都要聯(lián)絡(luò)代理進(jìn)行一次驗(yàn)證。iDSAME產(chǎn)品就提供了這種功能,它是一種更加嚴(yán)格的訪(fǎng)問(wèn)控制策略,用來(lái)保護(hù)企業(yè)核心、重要系統(tǒng)的數(shù)據(jù)和資源,具體實(shí)現(xiàn)是由iDSAME的Web代理以及相應(yīng)的URL訪(fǎng)問(wèn)策略來(lái)共同完成的。
Web代理安裝在受保護(hù)資源的機(jī)器上,當(dāng)用戶(hù)訪(fǎng)問(wèn)受保護(hù)的系統(tǒng)資源時(shí),Web代理首先截獲請(qǐng)求,檢查訪(fǎng)問(wèn)的是否是受保護(hù)資源,如果不是,則允許訪(fǎng)問(wèn);如果是,iDSAME則會(huì)根據(jù)用戶(hù)的Token檢查用戶(hù)能訪(fǎng)問(wèn)還是不能訪(fǎng)問(wèn)。與內(nèi)置代理、外置代理不同,使用該策略實(shí)現(xiàn)單點(diǎn)登錄會(huì)嚴(yán)重降低應(yīng)用系統(tǒng)的性能,因?yàn)橛脩?hù)每訪(fǎng)問(wèn)一個(gè)頁(yè)面,都會(huì)引起一次鑒權(quán)的過(guò)程。通常,這種情況應(yīng)用于企業(yè)的比較核心和重要的業(yè)務(wù)系統(tǒng)中。
4.交叉域單點(diǎn)登錄
交叉域單點(diǎn)登錄(Cross Domain SSO)是指實(shí)現(xiàn)單點(diǎn)登錄的幾個(gè)應(yīng)用服務(wù)器在不同的域內(nèi)。在這種情況下要實(shí)現(xiàn)單點(diǎn)登錄,必須將其他域轉(zhuǎn)換到本地域,進(jìn)行域名映射。交叉域單點(diǎn)登錄實(shí)現(xiàn)原理示意圖如圖1-3所示。
圖1-3 交叉域單點(diǎn)登錄實(shí)現(xiàn)原理示意圖
針對(duì)集成的不同的應(yīng)用系統(tǒng),我們會(huì)提供不同的單點(diǎn)登錄解決方案,下面是實(shí)現(xiàn)單點(diǎn)登錄功能的常用技術(shù)方案。
1.LTPA(Lightweight Third-Party Authentication)令牌環(huán)技術(shù)
LTPA是一種令牌環(huán),上面記錄了用戶(hù)的登錄信息和身份信息,它提供了基于Cookie的輕量級(jí)第三方認(rèn)證機(jī)制(LTPA),當(dāng)用戶(hù)發(fā)出對(duì)資源的請(qǐng)求時(shí),首先必須向認(rèn)證服務(wù)器認(rèn)證。認(rèn)證成功后,認(rèn)證服務(wù)器代表用戶(hù)生成LTPA Cookie。作為認(rèn)證標(biāo)記服務(wù)的LTPA Cookie中包含用戶(hù)標(biāo)識(shí)、密鑰和標(biāo)記數(shù)據(jù)、緩沖區(qū)長(zhǎng)度和到期信息,此信息使用認(rèn)證服務(wù)器和應(yīng)用系統(tǒng)之間共享的受密碼保護(hù)的密鑰加密。認(rèn)證服務(wù)器在請(qǐng)求的HTTP頭中插入Cookie,該請(qǐng)求通過(guò)連接發(fā)送到應(yīng)用系統(tǒng),應(yīng)用系統(tǒng)服務(wù)器接收請(qǐng)求、解密Cookie并基于Cookie中提供的標(biāo)識(shí)信息認(rèn)證用戶(hù)。
2.基于表單的單點(diǎn)登錄(Form-Based SSO)
基于表單的單點(diǎn)登錄(Form-Based SSO)功能,允許認(rèn)證服務(wù)器將已認(rèn)證的用戶(hù)透明地登錄到需要通過(guò)HTML表單認(rèn)證的后臺(tái)系統(tǒng)中?;诒韱蔚膯吸c(diǎn)登錄實(shí)現(xiàn)原理示意圖如圖1-4所示。
圖1-4 基于表單的單點(diǎn)登錄實(shí)現(xiàn)原理示意圖
3.HTTP頭文件(HTTP Header)技術(shù)
利用HTTP Header這種認(rèn)證方式,認(rèn)證服務(wù)器可以把經(jīng)過(guò)認(rèn)證的用戶(hù)身份信息(包括賬號(hào)、屬性信息等),通過(guò)HTTP Header傳給后臺(tái)的應(yīng)用系統(tǒng),后臺(tái)的應(yīng)用系統(tǒng)可以從HTTP Header中把這些用戶(hù)信息截取出來(lái),用來(lái)確認(rèn)用戶(hù)身份,從而實(shí)現(xiàn)統(tǒng)一認(rèn)證(單點(diǎn)登錄)的功能。這種統(tǒng)一認(rèn)證的方式需要后臺(tái)的應(yīng)用系統(tǒng)進(jìn)行相應(yīng)的修改,使它可以獲得HTTP Header中的用戶(hù)信息。
4.憑證保險(xiǎn)庫(kù)(GSO-Lockbox)技術(shù)
GSO-Lockbox這種實(shí)現(xiàn)單點(diǎn)登錄的方式一般會(huì)和Form-Based SSO方式一起來(lái)使用,主要是考慮到每個(gè)人在各個(gè)系統(tǒng)中的用戶(hù)身份可能會(huì)不一致,利用這種方式可以解決這種問(wèn)題。利用GSO-Lockbox,可以建立起用戶(hù)身份信息和后臺(tái)應(yīng)用系統(tǒng)之間的對(duì)應(yīng)關(guān)系。
在不同的產(chǎn)品中有各自的實(shí)現(xiàn)方式,例如,在IBM WebSphere Portal中叫做Credential Vault,也翻譯為“憑證保險(xiǎn)庫(kù)”。憑證保險(xiǎn)庫(kù)為實(shí)現(xiàn)單點(diǎn)登錄的每套應(yīng)用系統(tǒng)創(chuàng)建一個(gè)憑證保險(xiǎn)段,在每個(gè)憑證保險(xiǎn)段里則為每個(gè)Web用戶(hù)創(chuàng)建一個(gè)憑證保險(xiǎn)槽。槽是最小的憑證單位,用來(lái)存儲(chǔ)一個(gè)用戶(hù)在一套應(yīng)用系統(tǒng)中的用戶(hù)名和密碼鍵值對(duì)(見(jiàn)表1-1)。
表1-1 GSO-Lockbox實(shí)現(xiàn)單點(diǎn)登錄的方式
以上幾種方式很難說(shuō)誰(shuí)最好,最佳實(shí)踐的做法是根據(jù)客戶(hù)的具體情況選用不同的解決方案,或幾種實(shí)現(xiàn)方案同時(shí)使用,依據(jù)不同的應(yīng)用系統(tǒng)情況而定。但通常來(lái)說(shuō),應(yīng)遵循如下幾個(gè)原則。
(1)對(duì)部署在WebSphere Application Server、WebLogic Server、SAP NetWeaver Application Server、Domino等服務(wù)器上能識(shí)別LTPA令牌環(huán),且用戶(hù)目錄與Portal的用戶(hù)目錄為同一套,或者有一一對(duì)應(yīng)關(guān)心的應(yīng)用系統(tǒng),與Portal實(shí)現(xiàn)單點(diǎn)登錄時(shí),建議采用LTPA機(jī)制。
(2)對(duì)部署在WebSphere Application Server、WebLogic Server、SAP NetWeaver Application Server、Domino等服務(wù)器上,且用戶(hù)目錄與Portal的用戶(hù)目錄不是同一套,或者沒(méi)有一一對(duì)應(yīng)的應(yīng)用系統(tǒng),與Portal實(shí)現(xiàn)單點(diǎn)登錄時(shí),建議采用JAAS認(rèn)證。
(3)用戶(hù)注冊(cè)表與Portal不一致,但應(yīng)用系統(tǒng)中的用戶(hù)在Portal中都有對(duì)應(yīng)的用戶(hù)時(shí),不管其用戶(hù)名編排規(guī)則是否一致,皆建議采用憑證保險(xiǎn)庫(kù)技術(shù)。
使用單點(diǎn)登錄技術(shù)實(shí)現(xiàn)Portal系統(tǒng)與其他應(yīng)用系統(tǒng)的單點(diǎn)登錄后,用戶(hù)只要成功登錄Portal,就可以無(wú)須再次登錄而直接進(jìn)入應(yīng)用系統(tǒng),或者在Portal中直接使用應(yīng)用系統(tǒng)中授權(quán)的應(yīng)用或信息。在進(jìn)行實(shí)際項(xiàng)目開(kāi)發(fā)時(shí),通常會(huì)設(shè)計(jì)如下幾種模式,作為單點(diǎn)登錄及單點(diǎn)登錄的擴(kuò)展應(yīng)用。
以列表的方式進(jìn)入應(yīng)用系統(tǒng)首頁(yè),指的是提供一個(gè)展現(xiàn)應(yīng)用系統(tǒng)列表的Portlet,上面列出了實(shí)現(xiàn)單點(diǎn)登錄的所有應(yīng)用系統(tǒng)(見(jiàn)圖1-5)。點(diǎn)擊列表中的條目,可以直接在新的頁(yè)面中進(jìn)入該應(yīng)用系統(tǒng),而無(wú)須再次登錄或者提供任何憑證。
圖1-5 以列表Portlet的方式應(yīng)用單點(diǎn)登錄
很多時(shí)候,用戶(hù)需要進(jìn)入到系統(tǒng)的某個(gè)深層次頁(yè)面,而不是從系統(tǒng)首頁(yè)一步步點(diǎn)擊。單點(diǎn)登錄的深度集成模式指的是通過(guò)不同的標(biāo)簽直接進(jìn)入到客戶(hù)想進(jìn)去的頁(yè)面,如圖1-6所示。
圖1-6 點(diǎn)擊不同的標(biāo)簽直接進(jìn)入到應(yīng)用系統(tǒng)的深度集成頁(yè)面
很多客戶(hù)會(huì)有這樣的經(jīng)驗(yàn):當(dāng)應(yīng)用系統(tǒng)過(guò)多時(shí),自己都忘記了發(fā)起某個(gè)業(yè)務(wù)或某個(gè)功能的頁(yè)面到底在哪套系統(tǒng)中。應(yīng)用導(dǎo)航集成思路指的是,不是從應(yīng)用系統(tǒng)的角度梳理深度集成的頁(yè)面,而是從用戶(hù)的業(yè)務(wù)應(yīng)用角度來(lái)分析,將用戶(hù)經(jīng)常使用的功能頁(yè)面從業(yè)務(wù)的角度梳理、分類(lèi),并分門(mén)別類(lèi)地展現(xiàn)到系統(tǒng)中。用戶(hù)只需知道要干什么就行了,而不必關(guān)心要執(zhí)行的這個(gè)頁(yè)面到底在哪套系統(tǒng)中。也就是說(shuō),讓用戶(hù)忘掉系統(tǒng)的存在。圖1-7所示是典型的應(yīng)用導(dǎo)航圖。
圖1-7 典型的應(yīng)用導(dǎo)航圖(應(yīng)用導(dǎo)航允許用戶(hù)忘記系統(tǒng)的存在,只需知道要干什么就行了)
單點(diǎn)登錄的最廣泛和深入的應(yīng)用莫過(guò)于統(tǒng)一工作待辦了。把所有系統(tǒng)中每個(gè)用戶(hù)需要待辦的事項(xiàng)分門(mén)別類(lèi)地按照業(yè)務(wù)域劃分出來(lái),并集中展現(xiàn)到一個(gè)個(gè)欄目中,讓用戶(hù)原來(lái)需要登錄多套系統(tǒng)去處理的待辦事項(xiàng),在一個(gè)欄目中就完成了,多方便啊!圖1-8所示是將來(lái)自幾十套系統(tǒng)的待辦事項(xiàng)統(tǒng)一集成到一個(gè)欄目中,并按照9大業(yè)務(wù)域劃分的一個(gè)典型場(chǎng)景。
圖1-8 按照業(yè)務(wù)域在一個(gè)欄目中集中展現(xiàn)來(lái)自幾十套系統(tǒng)的待辦事項(xiàng)
單點(diǎn)登錄的實(shí)現(xiàn)技術(shù)還有很多,比如JAAS認(rèn)證等,但在項(xiàng)目實(shí)踐中應(yīng)用最多的就是LTPA令牌環(huán)和憑證保險(xiǎn)庫(kù)技術(shù)。本節(jié)詳細(xì)介紹這兩種方案的開(kāi)發(fā)/配置過(guò)程。
LTPA機(jī)制適用于部署在WebSphere Application Server、WebLogic Server、SAP NetWeaver Application Server、Domino等服務(wù)器上,它能識(shí)別LTPA令牌環(huán),以及用戶(hù)目錄與Portal的用戶(hù)目錄為同一套,或有一一對(duì)應(yīng)關(guān)系的應(yīng)用系統(tǒng)。本節(jié)以WebSphere Portal與Domino之間實(shí)現(xiàn)單點(diǎn)登錄為例,介紹LTPA機(jī)制是如何配置的。
LTPA(輕量級(jí)第三方認(rèn)證)是一個(gè)令牌環(huán),它是通過(guò)使用Domain Cookie而啟用的。這種經(jīng)過(guò)加密的會(huì)話(huà)Cookie被放置在用戶(hù)瀏覽器中,包含了一些信息,WebSphere或者Domino Application服務(wù)器可以加密這些信息,并使用這些信息來(lái)說(shuō)明用戶(hù)已經(jīng)通過(guò)該Cookie所覆蓋的DNS(Domain Naming Service,域名服務(wù))域中的認(rèn)證。
LTPACookie 包含以下信息。
— Cookie名稱(chēng):總是設(shè)置為L(zhǎng)tpaToken。
— 域:設(shè)置為Internet域,該域由參與單點(diǎn)登錄的所有服務(wù)器共享(例如:mycompany. com)。
— Cookie 到期:設(shè)置為當(dāng)瀏覽器終止時(shí)刪除該Cookie。
— 安全:設(shè)置為開(kāi)狀態(tài),以強(qiáng)制使用安全套接字層(SSL)。LTPA配置有一個(gè)設(shè)置參數(shù),使它創(chuàng)建只通過(guò)SSL發(fā)送的Cookie。
— Cookie值:被設(shè)置為L(zhǎng)TPA標(biāo)記。
LTPA標(biāo)記是一個(gè)加密的字符串,它包含以下信息。
— 用戶(hù)數(shù)據(jù):一般被設(shè)置為用戶(hù) ID,但也可以是任何用于唯一標(biāo)識(shí)用戶(hù)的用戶(hù)信息。
— 過(guò)期時(shí)間:與 Cookie 過(guò)期不同,這個(gè)字段用于強(qiáng)加一個(gè)時(shí)間限制,時(shí)間限制從登錄進(jìn)來(lái)的那一刻算起,而不受瀏覽器活動(dòng)或者不活動(dòng)影響。這個(gè)時(shí)間限制是一個(gè)可設(shè)置的LTPA配置,在默認(rèn)情況下為30分鐘。
Portal與Domino的SSO可以通過(guò)配置LTPA的方法來(lái)實(shí)現(xiàn)。通俗地講就是,用戶(hù)登錄Portal系統(tǒng)后,Portal系統(tǒng)會(huì)把用戶(hù)登錄信息加密成LTPA并存放到某一位置,當(dāng)用戶(hù)繼續(xù)訪(fǎng)問(wèn)Domino系統(tǒng)中的授權(quán)資源時(shí),Domino系統(tǒng)會(huì)自動(dòng)讀取該位置的LTPA,讀到并解密后拿到Domino系統(tǒng)中驗(yàn)證,如果驗(yàn)證通過(guò),則顯示給用戶(hù)授權(quán)信息。所以要配置Portal與Domino之間的SSO非常容易,只要先將Domino系統(tǒng)服務(wù)器的LTPA導(dǎo)出并存為.key文件,然后導(dǎo)入Portal系統(tǒng)所在的服務(wù)器(WebShpere Application Server)中就可以了。
1.3.2 憑證保險(xiǎn)庫(kù)技術(shù)是如何實(shí)現(xiàn)的
WebSphere Portal提供了Credential Vault(憑證保險(xiǎn)庫(kù))功能,Credential Vault通過(guò)Basic Authentication Header將用戶(hù)名和密碼傳遞給后端應(yīng)用程序。為了使Domino服務(wù)器接受通過(guò)這個(gè)頭部傳遞進(jìn)來(lái)的憑證,必須將服務(wù)器會(huì)話(huà)驗(yàn)證配置為Single-Server模式。在Multi-Server模式中,該服務(wù)器只接受通過(guò)LTPA機(jī)制傳遞的憑證。因此,為了與Domino應(yīng)用程序一起使用用于SSO的Credential Vault,必須將Domino服務(wù)器會(huì)話(huà)驗(yàn)證配置為Single-Server模式。
要使用Credential Vault,用戶(hù)需輸入一些憑證,輸入一次就夠了。隨后,這些憑證被存放在一個(gè)經(jīng)過(guò)加密的數(shù)據(jù)庫(kù)表中,每當(dāng)用戶(hù)訪(fǎng)問(wèn)該P(yáng)ortlet時(shí),這些憑證便被傳遞給后端應(yīng)用程序。要了解關(guān)于配置Credential Vault的細(xì)節(jié),請(qǐng)參見(jiàn)WebSphere Portal InfoCenter。
下面以一個(gè)最簡(jiǎn)單的SSO過(guò)程為例進(jìn)行介紹。
普通業(yè)務(wù)系統(tǒng)的登錄過(guò)程:系統(tǒng)首先提供一個(gè)頁(yè)面,讓我們輸入應(yīng)用程序中的用戶(hù)信息。
用戶(hù)輸入用戶(hù)名和密碼后,單擊“登錄”按鈕,該頁(yè)面提交到form所對(duì)應(yīng)的Action(check_login.jsp)進(jìn)行處理,我們看check_login.jsp的代碼。
接下來(lái)提交到數(shù)據(jù)庫(kù)驗(yàn)證用戶(hù)信息的合法性,如果合法,則定位到授權(quán)信息頁(yè)面;否則,重定位回到登錄頁(yè)面login.jsp。
在Portlet開(kāi)發(fā)中是如何解決這個(gè)問(wèn)題的?
其實(shí)起關(guān)鍵作用的還是check_login.jsp頁(yè)面,它需要獲得用戶(hù)名和密碼兩個(gè)鍵值,然后拿著這兩個(gè)參數(shù)到后臺(tái)數(shù)據(jù)庫(kù)去驗(yàn)證。在常規(guī)的登錄方式中,這兩個(gè)參數(shù)是通過(guò)login.jsp獲得的。事實(shí)上,只要Portlet能為該頁(yè)面提供這兩個(gè)鍵值,也就實(shí)現(xiàn)了登錄的自動(dòng)化。而Portlet要得到這兩個(gè)參數(shù)是非常簡(jiǎn)單的,所以實(shí)現(xiàn)單點(diǎn)登錄也就非常簡(jiǎn)單了。我們可以復(fù)制一個(gè)check_login.jsp文件,例如名為check_portal_login.jsp,這個(gè)頁(yè)面的兩個(gè)參數(shù)是Portlet提供的,剩下的事完全交給業(yè)務(wù)系統(tǒng)去處理,頁(yè)面流轉(zhuǎn)和全線(xiàn)控制都不用我們管了。
(1)JSP取值傳送URL
我們開(kāi)發(fā)一個(gè)使用系統(tǒng)專(zhuān)用槽的Portlet,使用憑證保險(xiǎn)庫(kù)的相關(guān)接口在PortletView.jsp中取出用戶(hù)存儲(chǔ)在憑證保險(xiǎn)庫(kù)中的鍵值,然后以URL的方式傳送到iFrame內(nèi)。
PortletView.jsp的部分代碼如下:
如果用戶(hù)已經(jīng)在憑證保險(xiǎn)庫(kù)中存儲(chǔ)了鍵值,那么該P(yáng)ortlet的View.jsp頁(yè)面被初始化時(shí),iFrame中將顯示用戶(hù)成功登錄后的授權(quán)信息,也就是實(shí)現(xiàn)了SSO。
(2)Class取值寫(xiě)Session,JSP取出并以URL傳送
我們?cè)赑ortlet的控制類(lèi)中取得用戶(hù)存儲(chǔ)在憑證保險(xiǎn)庫(kù)中的鍵值對(duì),并在PortletView的doview()方法中寫(xiě)入Session。在Portlet的Viwe.jsp中取出Session,然后像第一種方法一樣,以URL的方式傳送到目的代理。
(3)Class寫(xiě)Session,單點(diǎn)登錄代理取Session
我們?cè)赑ortlet的控制類(lèi)中取得用戶(hù)存儲(chǔ)在憑證保險(xiǎn)庫(kù)中的鍵值對(duì),并在PortletView的doview()方法中寫(xiě)入Session。而專(zhuān)為Portal開(kāi)發(fā)的協(xié)助登錄頁(yè)面則會(huì)直接從Session中取出用戶(hù)憑證,具體的操作方法略過(guò)。
由于這幾種方法開(kāi)發(fā)起來(lái)比較簡(jiǎn)單,所以這里就一帶而過(guò),不再詳細(xì)介紹了。
當(dāng)前題目:企業(yè)門(mén)戶(hù)---單點(diǎn)登錄與企業(yè)應(yīng)用系統(tǒng)集成
當(dāng)前URL:http://jinyejixie.com/article44/jjgche.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、定制開(kāi)發(fā)、全網(wǎng)營(yíng)銷(xiāo)推廣、做網(wǎng)站、網(wǎng)站內(nèi)鏈、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)