OMG,到底在尋找什么..................
          (構(gòu)造一個(gè)完美的J2EE系統(tǒng)所需要的完整知識(shí)體系)
          posts - 198,  comments - 37,  trackbacks - 0

          原貼地址:http://www.coolcode.cn/?p=89

          目的:

          對(duì)目前已有的 Web 應(yīng)用系統(tǒng),和將來待開發(fā)的 Web 應(yīng)用系統(tǒng)進(jìn)行集成,實(shí)現(xiàn)單點(diǎn)登錄。

          要求:

          1. 對(duì)已有的 Web 應(yīng)用系統(tǒng)不作大規(guī)模改造。
          2. 不限制待開發(fā)的 Web 應(yīng)用系統(tǒng)的開發(fā)工具。
          3. 不增加待開發(fā)系統(tǒng)的開發(fā)難度。

          分析:

          1. 目前,已有的系統(tǒng)都各自維護(hù)自己的一套用戶庫(kù),每個(gè)系統(tǒng)中的用戶數(shù)、用戶名、密碼幾乎都各不相同。要將已有的用戶庫(kù)進(jìn)行統(tǒng)一是不現(xiàn)實(shí)的。因此,我們可以通過將單點(diǎn)登錄系統(tǒng)中的用戶與其它個(gè)系統(tǒng)中的用戶建立映射,來實(shí)現(xiàn)用一個(gè)帳號(hào)來管理多個(gè)系統(tǒng)的目的。
          2. 已有的 Web 應(yīng)用系統(tǒng)、以及待開發(fā)的 Web 應(yīng)用系統(tǒng),可能不在同一個(gè)域下,雖然會(huì)話本身是保存在服務(wù)器端,但是會(huì)話 id 是需要 cookie 來傳遞的,而 cookie 不允許跨域訪問,而且考慮到各個(gè)系統(tǒng)的開發(fā)工具也各不相同,即使在同一個(gè)域下,不同的開發(fā)工具所開發(fā)的應(yīng)用程序之間也很難共享會(huì)話,因此要用共享會(huì)話的方式來實(shí)現(xiàn)單點(diǎn)登錄也不現(xiàn)實(shí)。因此我們通過在客戶端瀏覽器、單點(diǎn)登錄系統(tǒng)和 Web 應(yīng)用系統(tǒng)之間傳遞臨時(shí)會(huì)話,并讓 Web 應(yīng)用系統(tǒng)直接到單點(diǎn)登錄系統(tǒng)中獲取認(rèn)證信息來實(shí)現(xiàn)單點(diǎn)登錄。為保證不同開發(fā)工具都能夠到單點(diǎn)登錄系統(tǒng)獲取認(rèn)證信息,我們采用 xml-rpc 在 Web 應(yīng)用系統(tǒng)和單點(diǎn)登錄系統(tǒng)之間進(jìn)行通訊。

          實(shí)現(xiàn):

          單點(diǎn)登錄系統(tǒng)中設(shè)置 4 個(gè)表:

          1. 單點(diǎn)登錄系統(tǒng)用戶表,包含 user_id,name,password 3 個(gè)字段。
          2. Web 應(yīng)用系統(tǒng)表,包含 app_id,name(Web 應(yīng)用系統(tǒng)名稱),checkurl(Web 應(yīng)用系統(tǒng)中用來驗(yàn)證用戶登錄的程序地址) 3 個(gè)字段。
          3. 單點(diǎn)登錄系統(tǒng)用戶到各個(gè) Web 應(yīng)用系統(tǒng)的用戶映射表,包含id,user_id,app_id,name,password 5 個(gè)字段。
          4. 臨時(shí)會(huì)話表,包含 hash(臨時(shí)會(huì)話的 hash 編號(hào)),id(對(duì)應(yīng)單點(diǎn)登錄系統(tǒng)用戶到各個(gè) Web 應(yīng)用系統(tǒng)的用戶映射表中的 id 字段) 2個(gè)字段。

          用戶登錄單點(diǎn)登錄系統(tǒng)時(shí),通過單點(diǎn)登錄系統(tǒng)用戶表中的字段來驗(yàn)證用戶身份。登錄以后,用戶可以設(shè)置各個(gè)系統(tǒng)到該系統(tǒng)用戶的映射關(guān)系。設(shè)置好以后,當(dāng)通過該系統(tǒng)進(jìn)入其他某個(gè) Web 應(yīng)用系統(tǒng)時(shí),該系統(tǒng)會(huì)為該用戶和該系統(tǒng)生成一個(gè)臨時(shí)會(huì)話編號(hào)(hash),并轉(zhuǎn)到 Web 應(yīng)用系統(tǒng)中的登錄檢測(cè)頁面,登錄檢測(cè)頁面通過獲取到的臨時(shí)會(huì)話編號(hào),來調(diào)用單點(diǎn)登錄系統(tǒng)的獲取用戶名和密碼的 xml-rpc API,如果用戶名密碼如果正確,則轉(zhuǎn)到正常登錄后的頁面,如果不正確,則轉(zhuǎn)到登錄錯(cuò)誤的頁面。這里,xml-rpc API 在返回用戶名和密碼后,將刪除單點(diǎn)登錄系統(tǒng)數(shù)據(jù)庫(kù)中相應(yīng)的臨時(shí)會(huì)話,這樣不但用戶名、密碼都是在服務(wù)器之間進(jìn)行傳遞的,并且臨時(shí)會(huì)話存在的時(shí)間也是盡可能的短,因此只要保證服務(wù)器之間的對(duì)話不能被監(jiān)聽,即可保證安全性。

          已有系統(tǒng)需要增加一個(gè)用于單點(diǎn)登錄系統(tǒng)的登錄驗(yàn)證頁面,該頁面工作過程大致如下:

          1. 獲取 客戶端 hash 值
          2. 通過 hash 值得到用戶名和密碼(xml-rpc 調(diào)用)
          3. 通過用戶名和密碼進(jìn)行身份驗(yàn)證
          4. 返回身份驗(yàn)證后的頁面
          posted on 2006-09-12 14:43 OMG 閱讀(433) 評(píng)論(0)  編輯  收藏 所屬分類: <項(xiàng)目>系統(tǒng)集成

          <2006年9月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          IT風(fēng)云人物

          文檔

          朋友

          相冊(cè)

          經(jīng)典網(wǎng)站

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 新沂市| 永修县| 普兰店市| 五莲县| 北宁市| 砀山县| 文安县| 龙山县| 镇安县| 依安县| 天门市| 海南省| 焉耆| 富平县| 广平县| 普陀区| 商都县| 慈溪市| 阳城县| 娄烦县| 海淀区| 策勒县| 荔浦县| 丹江口市| 桐城市| 左权县| 丹巴县| 无为县| 蒲城县| 漳州市| 江口县| 克什克腾旗| 新民市| 荣昌县| 汶上县| 华阴市| 吐鲁番市| 永吉县| 巨野县| 吕梁市| 阿拉善右旗|