lbom

          小江西

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            18 隨筆 :: 21 文章 :: 69 評論 :: 0 Trackbacks

          需求:

          系統(tǒng)A與系統(tǒng)B分別部署在不同域的兩臺服務(wù)器中,但它們的身份都統(tǒng)一在身份認(rèn)證服務(wù)器中;身份認(rèn)證信息以Session方式存貯于各自系統(tǒng)中,并輔以cookie進(jìn)行使用。

          當(dāng)用戶在A系統(tǒng)登錄后,訪問B系統(tǒng)時,由于是跨域訪問,導(dǎo)致身份信息不能正確的傳遞到B系統(tǒng)中,從而致使用戶需在B系統(tǒng)中重新登錄。

          clip_image001[6]

          解決方案:

          處理這類跨域訪問時,我們最先使用從B系統(tǒng)向C通過HttpRequest(類AJAX請求)的方式獲取身份信息,此方式好處是同步處理,方便用使用;但其限制諸多,如需設(shè)置信任站點、用戶訪問確認(rèn)等,甚至,在對應(yīng)用服務(wù)器作了一次安全升級后,根本無法訪問了。因此,需另行開辟途徑,于是,在同事建議下,我們使用IFrame內(nèi)嵌跨域驗證網(wǎng)頁,來解決此問題。

          1、原理設(shè)計:用戶在訪問B系統(tǒng)時,先使用一內(nèi)置的iframe,并將iframe的src指向身份認(rèn)證服務(wù)器系統(tǒng)代理驗證接口;如果用戶已經(jīng)在A系統(tǒng)中進(jìn)行過登錄,即A域了中已存在著身份認(rèn)證信息后,身份認(rèn)證服務(wù)器中也將具有其身份信息將其附帶著身份認(rèn)證信息后重定向訪問B系統(tǒng)代理接口;B系統(tǒng)代理驗證接口在接收到由A系統(tǒng)傳遞而來的身份認(rèn)證信息后,通過身份認(rèn)證服務(wù)器驗證后,在B系統(tǒng)所在域重建身份認(rèn)證信息。

          2、實現(xiàn)邏輯貼碼:

          1)B系統(tǒng)代理驗證接口:

          (1)IFrame邏輯貼碼:

          clip_image002[6]

          (2)JS檢測是否通過認(rèn)證邏輯貼碼:

          clip_image003[6]

          2)身份認(rèn)證服務(wù)器端接口(JSP):

          clip_image004[6]

          3、注意事項:

          1)由于身份認(rèn)證中心使用cookie作為身份標(biāo)識,因此,需要用戶在瀏覽器中允許使用cookie的設(shè)置;

          2)由于在iframe中進(jìn)行跨域重定向,因此需在IE安全中的跨域瀏覽子框架項設(shè)為啟用:

          clip_image005[6]

          4、源碼文件:

          ……

          posted on 2010-02-08 17:55 lbom 閱讀(3501) 評論(3)  編輯  收藏

          評論

          # re: 使用內(nèi)嵌IFrame,處理系統(tǒng)跨域身份認(rèn)證的方案與實現(xiàn) 2010-02-08 19:45 凡客誠品官方網(wǎng)站
          實施的方式的發(fā)生的  回復(fù)  更多評論
            

          # re: 使用內(nèi)嵌IFrame,處理系統(tǒng)跨域身份認(rèn)證的方案與實現(xiàn) 2010-02-09 11:43 ljwan12
          系統(tǒng)大了,就統(tǒng)一管理session唄  回復(fù)  更多評論
            

          # re: 使用內(nèi)嵌IFrame,處理系統(tǒng)跨域身份認(rèn)證的方案與實現(xiàn) 2010-02-09 15:08 lbom
          @ljwan12
          這些系統(tǒng)分屬不同的業(yè)務(wù)范疇,從硬件、軟件、安全、投資方面,都無法將它們部署在一起,從而實現(xiàn)Session的統(tǒng)一管理。
          因此,我們從系統(tǒng)集成角度出發(fā),來解決此問題!為此,在身份認(rèn)證服務(wù)器和系統(tǒng)端都開發(fā)了代理,通過代理解決系統(tǒng)間的單點登錄,使問題得到解決  回復(fù)  更多評論
            


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 津市市| 壤塘县| 即墨市| 永川市| 商南县| 广安市| 白水县| 辽源市| 康马县| 玛多县| 甘德县| 尼勒克县| 专栏| 阿克苏市| 黄大仙区| 邛崃市| 成都市| 富阳市| 伊宁市| 绩溪县| 衡水市| 彭州市| 新绛县| 双牌县| 莫力| 西乌珠穆沁旗| 四平市| 沭阳县| 新兴县| 商洛市| 忻州市| 容城县| 鄂伦春自治旗| 张掖市| 新源县| 梧州市| 皮山县| 托克逊县| 叙永县| 大庆市| 宝山区|