lbom

          小江西

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(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)登錄后,訪問(wèn)B系統(tǒng)時(shí),由于是跨域訪問(wèn),導(dǎo)致身份信息不能正確的傳遞到B系統(tǒng)中,從而致使用戶需在B系統(tǒng)中重新登錄。

          clip_image001[6]

          解決方案:

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

          1、原理設(shè)計(jì):用戶在訪問(wèn)B系統(tǒng)時(shí),先使用一內(nèi)置的iframe,并將iframe的src指向身份認(rèn)證服務(wù)器系統(tǒng)代理驗(yàn)證接口;如果用戶已經(jīng)在A系統(tǒng)中進(jìn)行過(guò)登錄,即A域了中已存在著身份認(rèn)證信息后,身份認(rèn)證服務(wù)器中也將具有其身份信息將其附帶著身份認(rèn)證信息后重定向訪問(wèn)B系統(tǒng)代理接口;B系統(tǒng)代理驗(yàn)證接口在接收到由A系統(tǒng)傳遞而來(lái)的身份認(rèn)證信息后,通過(guò)身份認(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檢測(cè)是否通過(guò)認(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 閱讀(3501) 評(píng)論(3)  編輯  收藏

          評(píng)論

          # re: 使用內(nèi)嵌IFrame,處理系統(tǒng)跨域身份認(rèn)證的方案與實(shí)現(xiàn) 2010-02-08 19:45 凡客誠(chéng)品官方網(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ù)范疇,從硬件、軟件、安全、投資方面,都無(wú)法將它們部署在一起,從而實(shí)現(xiàn)Session的統(tǒng)一管理。
          因此,我們從系統(tǒng)集成角度出發(fā),來(lái)解決此問(wèn)題!為此,在身份認(rèn)證服務(wù)器和系統(tǒng)端都開發(fā)了代理,通過(guò)代理解決系統(tǒng)間的單點(diǎn)登錄,使問(wèn)題得到解決  回復(fù)  更多評(píng)論
            


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 濮阳市| 同心县| 龙胜| 永德县| 吉水县| 大理市| 甘德县| 阜阳市| 新郑市| 河源市| 陇川县| 观塘区| 英吉沙县| 赞皇县| 贵阳市| 思南县| 武陟县| 岑巩县| 德庆县| 乌兰察布市| 大洼县| 溆浦县| 邯郸县| 休宁县| 玛曲县| 曲沃县| 汉川市| 三都| 溧阳市| 盐边县| 焦作市| 绍兴县| 恩平市| 镇康县| 邛崃市| 休宁县| 霍州市| 白水县| 宁陕县| 万源市| 巴彦淖尔市|