日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

單點(diǎn)登錄的簡(jiǎn)單實(shí)現(xiàn)

 Joshua 2006-02-20
在門(mén)戶(hù)項(xiàng)目中,經(jīng)常會(huì)遇到如何實(shí)現(xiàn)單點(diǎn)登錄的問(wèn)題,下面就本人的經(jīng)驗(yàn)做個(gè)總結(jié)。歡迎大家進(jìn)行補(bǔ)充討論。

單點(diǎn)登錄的具體實(shí)現(xiàn)有很多種選擇:包括:
a)  采用專(zhuān)門(mén)的SSO商業(yè)軟件:  主要有:Netgrity的Siteminder,已經(jīng)被CA收購(gòu)。Novell  公司的iChain。RSA公司的ClearTrust等。
b)  采用門(mén)戶(hù)產(chǎn)品供應(yīng)商自己的SSO產(chǎn)品,如:IBM  的Tivoli  Access  Manager,Sun  公司的identity  Server,Oracle公司的OID等。
c)  這些商業(yè)軟件一般適用于客戶(hù)對(duì)SSO的需求很高,并且企業(yè)內(nèi)部采用COTS軟件如:Domino,SAP,Sieble的系統(tǒng)比較多的情況下采用。并結(jié)合身份管理。統(tǒng)一認(rèn)證等項(xiàng)目采用。采用這些軟件一般都要對(duì)要集成的系統(tǒng)做些改造,如在要集成的系統(tǒng)上安裝AGENT?,F(xiàn)在一般只提供常見(jiàn)軟件如:Domino,SAP,Sieble,常見(jiàn)應(yīng)用服務(wù)器:weblogic,websphere等的AGENT。要先統(tǒng)一這些系統(tǒng)的認(rèn)證。一般采用LDAP或數(shù)據(jù)庫(kù)。然后才能實(shí)現(xiàn)SSO。比較麻煩。
d)  另外,如果不想掏銀子,也有OPEN  SOURCE的SSO軟件可選:主要有:http://www./    https://opensso.dev./    http://www.  等。具體怎么樣就不清楚了。

如果項(xiàng)目對(duì)SSO的要求比較低,又不想對(duì)要被集成的系統(tǒng)做任何改動(dòng),可采用下面介紹的方式簡(jiǎn)單實(shí)現(xiàn):下面我們通過(guò)一個(gè)例子來(lái)說(shuō)明。假如一個(gè)門(mén)戶(hù)項(xiàng)目要對(duì)下面的幾個(gè)系統(tǒng)做SSO。

 

用戶(hù)在這些系統(tǒng)中的用戶(hù)名,密碼各不相同,如:?jiǎn)T工號(hào)為001的員工在這些系統(tǒng)中的用戶(hù)名,密碼分別如下:  

用戶(hù)  系統(tǒng)  用戶(hù)名  密碼  
001  Portal系統(tǒng)  A  1234  
001  郵件系統(tǒng)  B  23456  
001  DOMINO系統(tǒng)  C  ABCDE  
001  報(bào)銷(xiāo)系統(tǒng)  D  CCCCC  
001  工資系統(tǒng)  E  DDDDD  



首先,建立員工在PORTAL系統(tǒng)中的用戶(hù)名和其他系統(tǒng)中的用戶(hù)名之間的對(duì)應(yīng)關(guān)系

要建立員工在PORTAL系統(tǒng)中的用戶(hù)名和其他系統(tǒng)中的用戶(hù)名之間的對(duì)應(yīng)關(guān)系并保存。可保存在表中或LDAP中或文件系統(tǒng)中。當(dāng)然要考慮這些系統(tǒng)之間的數(shù)據(jù)同步問(wèn)題。比較好的方式是找到用戶(hù)在這些系統(tǒng)中的都存在的唯一信息(如員工號(hào),MAIL地址,姓名等)。通過(guò)唯一信息實(shí)時(shí)到各個(gè)系統(tǒng)中去取認(rèn)證所需要的信息。就不需要考慮數(shù)據(jù)同步問(wèn)題。比較實(shí)用。可以建立類(lèi)似下面的表:密碼可采用加密保存。  


 create  table  sso_info          

 (

 

 user    varchar2(20),        /*用戶(hù)名*/

 app_name  varchar2(20),      /*應(yīng)用系統(tǒng)*/

 architect  varchar2(4),        /*應(yīng)用系統(tǒng)的架構(gòu)BS或CS*/

 app_company  varchar2(50),                    /*用戶(hù)所屬分公司*/

 app_department  varchar2(50),            /*用戶(hù)所在的部門(mén)*/

 app_user  varchar2(15),                                  /*在該系統(tǒng)中的用戶(hù)名*/

 app_passwd  varchar2(15),    /*在該系統(tǒng)中的密碼*/

 app_cookie  varchar2(30),                            /*COOKIE名稱(chēng)*/

 form_user  varchar2(20),                                /*認(rèn)證頁(yè)面中FORM的用戶(hù)名字段*/

 form_passwd  varchar2(20),                    /*認(rèn)證頁(yè)面中FORM的密碼字段*/

 app_special    varchar2(20)                      /*其他*/

 );





通過(guò)IFRAME或超連接方式集成目標(biāo)系統(tǒng),并進(jìn)行SSO

 通過(guò)IFRAME或超連接方式集成目標(biāo)系統(tǒng),并在URL中帶上用戶(hù)名和密碼。如集成DOMINO可采用如下方式:  <iframe  style="BACKGROUND-COLOR:  #f7f7ff"  align="middle"  marginwidth="0"  marginheight="0"  src="http://host1/names.nsf?Login&Username=***&Password=pass&RedirectTo=/names.nsf"  frameborder="0"  width="100%"  scrolling="yes"  height="100%"  />


或:
<Href  src=“http://  host1/names.nsf?Login&Username=***&Password=pass&RedirectTo=/names.nsf”  />
以上采用的是在HTTP中直接傳遞明碼,為提高安全性,可采用HTTPS來(lái)傳遞用戶(hù)名和密碼。另外采用這種方式被集成的系統(tǒng)必須支持FORM方式認(rèn)證。J2EE應(yīng)用,DOMINO等都支持FORM認(rèn)證。
這兩種方式如果SSO成功,就自動(dòng)進(jìn)入目標(biāo)系統(tǒng)的界面,如果實(shí)現(xiàn)會(huì)顯示目標(biāo)系統(tǒng)的登錄界面。其效果圖如下:

 


這種方式,必須維護(hù)對(duì)應(yīng)關(guān)系表,如上面的sso_info。更好的方式是提供界面,讓最終用戶(hù)自己維護(hù)這種對(duì)應(yīng)關(guān)系,可模仿Compoze  portlets  for  lotus的做法,在用戶(hù)第一次進(jìn)入要與之做SSO的系統(tǒng)時(shí),如DOMINO系統(tǒng),顯示一個(gè)界面,讓用戶(hù)自己輸入他在該系統(tǒng)中的用戶(hù)名/密碼等信息。并保存到表中或LDAP等其他數(shù)據(jù)源中。以后用戶(hù)要進(jìn)入這些系統(tǒng)時(shí),就直接從表中或其他數(shù)據(jù)源中取用戶(hù)的用戶(hù)名/密碼等信息,幫助用戶(hù)做認(rèn)證。建議采用這種方式。如下圖所示。如果用戶(hù)改變了自己在DOMINO系統(tǒng)中的用戶(hù)名,密碼。從門(mén)戶(hù)系統(tǒng)進(jìn)入DOMINO系統(tǒng)時(shí),認(rèn)證會(huì)失敗,就重新顯示類(lèi)似下面的界面。讓用戶(hù)重新輸入他在DOMINO系統(tǒng)中新的用戶(hù)名,密碼并保存。


 

以上這種實(shí)現(xiàn)方式,一般需要瀏覽器支持COOKIE,所以要注意瀏覽器的配置,在開(kāi)發(fā)階段,為方便調(diào)試,可設(shè)置IE,讓它顯示COOKIE的名稱(chēng)。如下所示:

 



采用這種方式,對(duì)要集成的系統(tǒng)不需要做任何的改動(dòng)。如果PORTAL系統(tǒng)中的用戶(hù)在被集成的系統(tǒng)中的權(quán)限都一樣,可采用建立一個(gè)通用用戶(hù)的做法。也就是所有在PORTAL系統(tǒng)中的用戶(hù)都采用這個(gè)通用用戶(hù)進(jìn)入目標(biāo)系統(tǒng)。這種方式等于是采用頁(yè)面集成方式做集成。比較方便使用。另外,有時(shí)候需要采用調(diào)用API,或配置Adapter等應(yīng)用集成方式來(lái)集成其他系統(tǒng),一般也是通過(guò)定義一個(gè)連接專(zhuān)用的用戶(hù)。在A(yíng)PI中或在配置Adapter的時(shí)候?qū)懰?。如采用JAVA  API方式集成DOMINO:

lotus.domino.Session  dominoSession  =  NotesFactory.createSession(dominoServer,  “***”,  “password”);





CS結(jié)構(gòu)實(shí)現(xiàn)方式


經(jīng)常有人問(wèn)CS結(jié)構(gòu)的應(yīng)用如何實(shí)現(xiàn)SSO,本人的建議是對(duì)這種系統(tǒng)不要自己去實(shí)現(xiàn)SSO。很麻煩,其實(shí)輸個(gè)用戶(hù)名,密碼沒(méi)什么大不了的。如果要實(shí)現(xiàn),一是采用商業(yè)軟件。另外也可以采用以下方式:在PORTAL的PORTLET上建立超連接。并通過(guò)APPLET方式啟動(dòng)CS結(jié)構(gòu)的應(yīng)用系統(tǒng)的登錄界面。然后通過(guò)如下的方式把用戶(hù)名/密碼傳遞過(guò)去。
 -不能做任何改動(dòng)的客戶(hù)端  -  WIN消息(給登錄窗口發(fā)送用戶(hù)名,密碼等登錄所需要的信息),模擬鍵盤(pán)(java有模擬鍵盤(pán)輸入的API)
 -可以做改動(dòng)的客戶(hù)端  -  參數(shù)傳遞,并讓登錄的EXE文件讀取參數(shù)進(jìn)行認(rèn)證。
因?yàn)橐孉PPLET執(zhí)行本地的EXE文件,所以必須對(duì)IE中的JRE的安全進(jìn)行設(shè)置。    




其他:
在采用以上方式實(shí)現(xiàn)了SSO后,要注意LOGOUT,可采用與LOGIN相同的方式。也可以通過(guò)被集成系統(tǒng)的超時(shí)設(shè)置來(lái)實(shí)現(xiàn)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多