單點(diǎn)登錄(Single Sign
On)是門戶產(chǎn)品的一大特點(diǎn),可以為企業(yè)用戶提供統(tǒng)一的信息資源認(rèn)證訪問平臺,通過實(shí)施單點(diǎn)登錄功能,使各種用戶只需一次登錄就可以根據(jù)相關(guān)的規(guī)則去訪問
不同的應(yīng)用系統(tǒng),提高IT系統(tǒng)的易用性、安全性、穩(wěn)定性;在此基礎(chǔ)上進(jìn)一步實(shí)現(xiàn)企業(yè)用戶高速協(xié)同辦公和企業(yè)知識管理。
SSO實(shí)現(xiàn)原理:
SSO通常都是應(yīng)用于WEB系統(tǒng)中?;赪eb的身份驗(yàn)證的實(shí)質(zhì)無外乎就是有一個(gè)表單,表單里面讓用
戶輸入用戶名稱和密碼,然后提交給驗(yàn)證的頁面,通過身份驗(yàn)證后,通過Session來儲存用戶的一些信息,然后每次訪問頁面時(shí),從session里面讀這
些信息,如果存在,則進(jìn)入登錄后的界面,否則,就認(rèn)為沒有登錄??蛻舳艘С諧ookie來存儲sessionid,與服務(wù)器上創(chuàng)建的session來對
應(yīng)。
SSO都要有一個(gè)單一的登錄點(diǎn),由此登錄點(diǎn)將創(chuàng)建的會話token傳遞給應(yīng)用系統(tǒng)。SSO需要建立一
個(gè)統(tǒng)一的認(rèn)證,權(quán)限信息庫。但現(xiàn)實(shí)中,有的系統(tǒng)無法使用外部的認(rèn)證,授權(quán)信息庫,所以就需要在應(yīng)用系統(tǒng)和Portal
Server之間進(jìn)行認(rèn)證,同時(shí)進(jìn)行授權(quán)信息的數(shù)據(jù)同步。根據(jù)認(rèn)證,授權(quán)實(shí)現(xiàn)的位置可以分為兩種實(shí)現(xiàn)方式:
第一類是通過Agent的方式,即在后端為每個(gè)Web應(yīng)用系統(tǒng)都安裝一個(gè)Agent,由Agent來
接管該系統(tǒng)的身份驗(yàn)證和訪問控制,Portal中會存放自己的用戶信息,以及這些用戶與其他系統(tǒng)的用戶對應(yīng)信息。這些Agent能夠通過配置,輕松的接管
了后面的系統(tǒng)的身份驗(yàn)證和訪問控制。
第二類是通過Proxy的方式,即具有一個(gè)Proxy
Server,由它來接管對于后端系統(tǒng)的訪問,提交請求和讀取數(shù)據(jù),然后再返回給Portal。同時(shí)Portal可以存放用戶信息以及用戶的對應(yīng)關(guān)系。
Proxy
Server會通過存儲的用戶對應(yīng)關(guān)系和用戶名和密碼,自動完成后端系統(tǒng)的登錄,然后就象一個(gè)瀏覽器一樣,提取數(shù)據(jù),返回?cái)?shù)據(jù)給后端系統(tǒng)。這樣的話后臺系
統(tǒng)不用做任何修改,身份認(rèn)證和訪問控制仍然由各個(gè)系統(tǒng)自己管理。
Jetspeed2.0中SSO的實(shí)現(xiàn):
Jetspeed2.0中的SSO支持基本的認(rèn)證方式,支持基于cookies和Form形式的認(rèn)
證。憑證信息的存儲作為一個(gè)組件實(shí)現(xiàn),使用Jetspeed2.0的安全模式存儲憑證信息(即Portal中的用戶憑證和其他系統(tǒng)的用戶憑證是存放在一
起,使用同樣方式管理)。SSO功能包含三個(gè)方面:
1、SSO管理
管理SSO的憑證信息和建立Portal用戶的對應(yīng)關(guān)系。用admin登錄,在“Jetspeed管
理portlets”下有“SSO管理”,在這里有兩個(gè)Portlet:j2-admin::SSOBrowserPortlet和j2-
admin::SSODetailsPortlet。左側(cè)的是站點(diǎn)信息管理,包括站點(diǎn)名稱,站點(diǎn)URL,站點(diǎn)域,以及用戶名和密碼的參數(shù)名稱。管理的是要
訪問站點(diǎn)的一些基本信息。右側(cè)是管理此站點(diǎn)的用戶與Portal用戶的對應(yīng)關(guān)系。遠(yuǎn)處的站點(diǎn)用戶信息包括用戶賬號和憑證,可以同Portal中的單個(gè)用戶
對應(yīng)也可以同用戶組對應(yīng)。同一個(gè)站點(diǎn)下可以有多個(gè)對應(yīng)關(guān)系。
2、SSO Provider服務(wù)
是Jetspeed服務(wù)框架的一部分,處理SSO站點(diǎn)和憑證信息的存儲,并且提供了通過url來獲得
數(shù)據(jù)的接口(注,通過站點(diǎn)的鏈接/URL來獲得內(nèi)容,筆者一開始以為是通過站點(diǎn)名稱)。站點(diǎn)信息都存放在SSOSite對象中,憑證信息都存放在
SSOContext對象中。
3、SSO Proxy Portlet
這個(gè)Portlet為門戶與被認(rèn)證的站點(diǎn)提供了一個(gè)代理。它的主要目的是在它訪問在配置參數(shù)中定義的
目標(biāo)地址之前認(rèn)證所有SSO用戶賬號的憑證。因?yàn)橛脩羰孪炔⒉恢揽赡苓x擇哪個(gè)目標(biāo)地址。這樣登錄提示將不會出現(xiàn),因?yàn)橐粋€(gè)SSO入口已經(jīng)存在并且用戶已
經(jīng)被許可。SSO Proxy保留客戶端的cache以便認(rèn)證只發(fā)生一次。
SSO應(yīng)用:
在Jetspeed2.0中自帶了一個(gè)簡單的例子程序SSO IFrame
Portlet。Portlet根據(jù)目標(biāo)地址獲得站點(diǎn)的憑證信息,組成URL字符串,使用IFrame形式提交訪問目標(biāo)站點(diǎn)。注意:IFrame由程序代
碼自動生成。高度不能為百分比,否則IE6無法顯示。
SSOWebContentPortle是獲取網(wǎng)頁信息的Portlet,也使用了SSO。注意,需要將jetspeed/WEB-INF/lib/xerces-2.3.0.jar拷貝到demo/WEB-INF/lib目錄下。
總結(jié):
Jetspeed2.0中提供了站點(diǎn)信息和用戶憑證的管理,建立了門戶用戶與其他應(yīng)用系統(tǒng)用戶的對應(yīng)關(guān)系,并提供了獲得這些數(shù)據(jù)的接口。使用Proxy Portlet可實(shí)現(xiàn)預(yù)登錄。通過這些方法完成了簡單的單點(diǎn)登錄功能。但在實(shí)際應(yīng)用中根據(jù)不同的系統(tǒng)需要做些二次開發(fā)工作。因?yàn)楦飨到y(tǒng)的用戶認(rèn)證都是在各系統(tǒng)的認(rèn)證授權(quán)模塊完成的,Portal只是存儲了用戶憑證的對應(yīng)關(guān)系,這樣就存在了系統(tǒng)間憑證信息同步的問題。對此需要在實(shí)際應(yīng)用中注意。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報(bào)。