lbom

          小江西

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

          需求:

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

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

          clip_image001[6]

          解決方案:

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

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

          2、實現邏輯貼碼:

          1)B系統代理驗證接口:

          (1)IFrame邏輯貼碼:

          clip_image002[6]

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

          clip_image003[6]

          2)身份認證服務器端接口(JSP):

          clip_image004[6]

          3、注意事項:

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

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

          clip_image005[6]

          4、源碼文件:

          ……

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

          評論

          # re: 使用內嵌IFrame,處理系統跨域身份認證的方案與實現 2010-02-08 19:45 凡客誠品官方網站
          實施的方式的發生的  回復  更多評論
            

          # re: 使用內嵌IFrame,處理系統跨域身份認證的方案與實現 2010-02-09 11:43 ljwan12
          系統大了,就統一管理session唄  回復  更多評論
            

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


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


          網站導航:
           
          主站蜘蛛池模板: 宁河县| 磐石市| 海盐县| 秦安县| 江陵县| 西平县| 宁化县| 京山县| 阳谷县| 南靖县| 合肥市| 大兴区| 曲靖市| 新泰市| 阳曲县| 宁强县| 龙海市| 宣威市| 南宫市| 宣化县| 岳阳县| 札达县| 北宁市| 古田县| 梁河县| 刚察县| 邵阳市| 潼南县| 陇南市| 吐鲁番市| 永吉县| 龙南县| 顺昌县| 龙川县| 南漳县| 讷河市| 永吉县| 紫阳县| 岑溪市| 嘉荫县| 沙湾县|