<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    世事如棋
    Aspire to Professionalism
    posts - 4,  comments - 12,  trackbacks - 0

      在門戶項目中,經常會遇到如何實現單點登錄的問題,下面就本人的經驗做個總結。歡迎大家進行補充討論。

    單點登錄的具體實現有很多種選擇,包括:

    1. 采用專門的SSO商業(yè)軟件: 主要有:Netgrity的Siteminder,已經被CA收購。Novell 公司的iChain。RSA公司的ClearTrust等。
    2. 采用門戶產品供應商自己的SSO產品,如:BEA的WLES,IBM 的Tivoli Access Manager,Sun 公司的identity Server,Oracle公司的OID等。
    3. 這些商業(yè)軟件一般適用于客戶對SSO的需求很高,并且企業(yè)內部采用COTS軟件如:Domino,SAP,Sieble的系統(tǒng)比較多的情況下采用。并結合身份管理。統(tǒng)一認證等項目采用。采用這些軟件一般都要對要集成的系統(tǒng)做些改造,如在要集成的系統(tǒng)上安裝AGENT。現在一般只提供常見軟件如:Domino,SAP,Sieble,常見應用服務器:weblogic,websphere等的AGENT。要先統(tǒng)一這些系統(tǒng)的認證。一般采用LDAP或數據庫。然后才能實現SSO。比較麻煩。
    4. 另外,如果不想掏銀子,也有OPEN SOURCE的SSO軟件可選:主要有:http://www.josso.org/https://opensso.dev.java.net/http://www.sourceid.org 等。具體怎么樣就不清楚了。

      如果項目對SSO的要求比較低,又不想對要被集成的系統(tǒng)做任何改動,可采用下面介紹的方式簡單實現:下面我們通過一個例子來說明。假如一個門戶項目要對下面的幾個系統(tǒng)做SSO。

    圖一

      用戶在這些系統(tǒng)中的用戶名,密碼各不相同,如:員工號為001的員工在這些系統(tǒng)中的用戶名,密碼分別如下:

    用戶 系統(tǒng) 用戶名 密碼
    001 Portal系統(tǒng) A 1234
    001 郵件系統(tǒng) B 2345
    001 DOMINO系統(tǒng) C AAAA
    001 報銷系統(tǒng) D CCCC
    001 工資系統(tǒng) E BBBB

    首先,建立員工在PORTAL系統(tǒng)中的用戶名和其他系統(tǒng)中的用戶名之間的對應關系

      首先,要建立員工在PORTAL系統(tǒng)中的用戶名和其他系統(tǒng)中的用戶名之間的對應關系并保存。可保存在表中或LDAP中或文件系統(tǒng)中。當然要考慮這些系統(tǒng)之間的數據同步問題。比較好的方式是找到用戶在這些系統(tǒng)中的都存在的唯一信息(如員工號,MAIL地址,姓名等)。通過唯一信息實時到各個系統(tǒng)中去取認證所需要的信息。就不需要考慮數據同步問題。比較實用。可以建立類似下面的表:密碼可采用加密保存。如果是采用BEA的Weblogic Portal,可采用UUP來保存這些信息。

    	(
    	
    	user	 varchar2(20),   	/*用戶名*/
    	app_name varchar2(20),  	/*應用系統(tǒng)*/
    	architect varchar2(4),  		/*應用系統(tǒng)的架構BS或CS*/
    	app_company varchar2(50),          /*用戶所屬分公司*/
    	app_department varchar2(50),      /*用戶所在的部門*/
    	app_user varchar2(15),                 /*在該系統(tǒng)中的用戶名*/
    	app_passwd varchar2(15), 	/*在該系統(tǒng)中的密碼*/
    	app_cookie varchar2(30),              /*COOKIE名稱*/
    	form_user varchar2(20),                /*認證頁面中FORM的用戶名字段*/
    	form_passwd varchar2(20),          /*認證頁面中FORM的密碼字段*/
    	app_special  varchar2(20)           /*其他*/
    	);
    

    通過IFRAME或超連接方式集成目標系統(tǒng),并進行SSO

      通過IFRAME或超連接方式集成目標系統(tǒng),并在URL中帶上用戶名和密碼。如集成DOMINO可采用如下方式:

      <IFRAME src=http://host1/names.nsf?Login&Username=admin&Password=pass&RedirectTo=/names.nsf
    width="100%" frameborder="0" align="middle" height="100%" hspace="0" marginheight="0" marginwidth="0" scrolling="yes" style="background-color:#f7f7ff;">
    </IFRAME>

      或:
    Href src=“http:// host1/names.nsf?Login&Username=admin&Password=pass&RedirectTo=/names.nsf
    以上采用的是在HTTP中直接傳遞明碼,為提高安全性,可采用HTTPS來傳遞用戶名和密碼。另外采用這種方式被集成的系統(tǒng)必須支持FORM方式認證。J2EE應用,DOMINO等都支持FORM認證。

      這兩種方式如果SSO成功,就自動進入目標系統(tǒng)的界面,如果實現會顯示目標系統(tǒng)的登錄界面。其效果圖如下:

    登錄界面

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

    認證失敗

      以上這種實現方式,一般需要瀏覽器支持COOKIE,所以要注意瀏覽器的配置,在開發(fā)階段,為方便調試,可設置IE,讓它顯示COOKIE的名稱。如下所示:

    瀏覽器的配置

      采用這種方式,對要集成的系統(tǒng)不需要做任何的改動。如果PORTAL系統(tǒng)中的用戶在被集成的系統(tǒng)中的權限都一樣,可采用建立一個通用用戶的做法。也就是所有在PORTAL系統(tǒng)中的用戶都采用這個通用用戶進入目標系統(tǒng)。這種方式等于是采用頁面集成方式做集成。比較方便使用。另外,有時候需要采用調用API,或配置Adapter等應用集成方式來集成其他系統(tǒng),一般也是通過定義一個連接專用的用戶。在API中或在配置Adapter的時候寫死。如采用JAVA API方式集成DOMINO:

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

    CS結構實現方式

      經常有人問CS結構的應用如何實現SSO,本人的建議是對這種系統(tǒng)不要自己去實現SSO。很麻煩,其實輸個用戶名,密碼沒什么大不了的。如果要實現,一是采用商業(yè)軟件。另外也可以采用以下方式:在PORTAL的PORTLET上建立超連接。并通過APPLET方式啟動CS結構的應用系統(tǒng)的登錄界面。然后通過如下的方式把用戶名/密碼傳遞過去。

      -不能做任何改動的客戶端 - WIN消息(給登錄窗口發(fā)送用戶名,密碼等登錄所需要的信息),模擬鍵盤(java有模擬鍵盤輸入的API)

      -可以做改動的客戶端 - 參數傳遞,并讓登錄的EXE文件讀取參數進行認證。

      因為要讓APPLET執(zhí)行本地的EXE文件,所以必須對IE中的JRE的安全進行設置。

    對IE中的JRE的安全進行設置

    其他:

      在采用以上方式實現了SSO后,要注意LOGOUT,可采用與LOGIN相同的方式。也可以通過被集成系統(tǒng)的超時設置來實現。

    單點登錄SSO技術資料收集

    ?作者簡介
    dev2dev ID: xcjing,BEA 資深技術顧問,加入BEA中國多年,在門戶技術、RFID解決方案上有著豐富的經驗。
    dot dot dot

    dot
    ??作者其它文章
    posted on 2006-05-17 22:08 KingWell 閱讀(441) 評論(0)  編輯  收藏 所屬分類: J2EE 相關
    歡迎訪問我的網站
    JSF中國

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(1)

    隨筆檔案

    文章分類

    文章檔案

    收藏夾

    我的資源

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日本一道高清不卡免费| 女人18毛片a级毛片免费| 内射无码专区久久亚洲| 亚洲色成人WWW永久在线观看| 久久免费看黄a级毛片| 亚洲成人午夜电影| 亚洲第一网站免费视频| 亚洲13又紧又嫩又水多| 97人伦色伦成人免费视频| 亚洲综合色丁香婷婷六月图片| 性做久久久久久免费观看| 中文字幕乱码亚洲无线三区| 成人免费无码大片a毛片| 精品亚洲成A人在线观看青青| 免费v片在线观看无遮挡| 免费中文字幕视频| 中文字幕亚洲乱码熟女一区二区| 国产一级黄片儿免费看| 久久噜噜噜久久亚洲va久| 成年人视频免费在线观看| 亚洲国产成人精品无码区二本 | 182tv免费视视频线路一二三| 亚洲天天做日日做天天看| 99久久免费国产香蕉麻豆 | 四虎一区二区成人免费影院网址| 精品国产日韩亚洲一区| 免费精品无码AV片在线观看| 最新国产成人亚洲精品影院| 亚洲AV无码专区日韩| 两个人看的www免费视频中文| 亚洲中文字幕久久精品无码2021| 特级淫片国产免费高清视频| 国产伦精品一区二区免费| 亚洲韩国在线一卡二卡| 国产美女精品视频免费观看| 91视频精品全国免费观看| 国产成人亚洲合集青青草原精品| 亚洲精品色婷婷在线影院| 热re99久久6国产精品免费| 丰满亚洲大尺度无码无码专线 | 久久综合亚洲色hezyo|