lbom

          小江西

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

          需求:

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

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

          clip_image001[6]

          解決方案:

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

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

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

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

          (1)IFrame邏輯貼碼:

          clip_image002[6]

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

          clip_image003[6]

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

          clip_image004[6]

          3、注意事項(xiàng):

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

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

          clip_image005[6]

          4、源碼文件:

          ……

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

          評(píng)論

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

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

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


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 承德县| 修文县| 尚志市| 旌德县| 东乡族自治县| 徐闻县| 贵溪市| 黔西县| 获嘉县| 乌鲁木齐市| 呼玛县| 石景山区| 孝昌县| 大名县| 响水县| 辉县市| 新邵县| 平塘县| 科技| 黑山县| 邳州市| 迁西县| 彰化县| 抚宁县| 石嘴山市| 隆尧县| 美姑县| 宜兴市| 娱乐| 炉霍县| 阳谷县| 大石桥市| 湟源县| 慈溪市| 宜宾市| 兴安盟| 沾益县| 石狮市| 贵阳市| 西贡区| 兴隆县|