文|暢文丁
隨著信息化的迅猛發展,政府企事業單位和機構不斷地基于Internet/Intranet建設業務信息系統,而這些業務系統都要求實現用戶管理、身份認證、授權等必不可少的安全措施,新建系統與已有系統的繼承或融合上,特別是針對相同的用戶群會帶來以下的問題:1、多個用戶管理和身份認證系統會增加整個信息系統的管理工作成本;2、用戶需要記憶多個賬號和口令,使用極為不便;3、無法實現統一認證和單點登錄,影響系統間資源整合的效果,也無法統一實施安全策略;4、無法統一分析用戶應用行為。解決以上問題有必要建設統一用戶管理和認證平臺實現統一用戶管理、統一認證、單點登錄、多點漫游便于安全管理、運維管理和用戶使用。下面結合實際工作經驗,針對應用系統與統一認證平臺集成方案中比較常見的正向代理和反向代理技術談一談兩者的實現原理和比較:
1、正向代理技術或者叫代理插件技術(agent plugin), 在集成實施的時候需要部署在應用軟件前端的Web服務器上,以HTTP Server插件的方式進行部署。對于后臺應用的訪問,會由代理插件進行攔截,然后再進行認證和授權的動作(見圖1)。

圖1 正向代理的集成方式示意圖
用戶通過瀏覽器訪問統一門戶,登錄系統,登錄請求首先發送到認證中心,進行統一的用戶認證,認證通過后再攜帶SSOUser信息對各應用系統進行訪問。具體實現步驟為:
(1)用戶請求訪問業務系統,填寫用戶名和密碼;
(2)代理程序將用戶填寫的用戶名和密碼發送到統一認證中心;
(3)統一認證中心驗證用戶信息的有效性,若有效,則生成一個SSOUser信息給用戶;
(4)用戶攜帶SSOUser信息去訪問系統,匹配相應的操作權限;
(5)用戶完成此次操作任務;
(6)用戶操作完畢,退出登錄。
在正向代理集成方案中,各應用系統均部署認證中心的代理插件,插件的作用主要為應用系統與認證中心的通信和數據傳輸,攔截用戶對應用的請求,根據不同的請求,觸發不同的行為,比如判斷用戶提交的用戶名和密碼,獲取后發送至認證中心進行認證。JAVA平臺的代理形式通常為部署JAR包,主要邏輯由JAR包中的filter執行,.NET平臺插件介質形式通常為DLL文件,主要邏輯由HttpModule及其調用的類執行。
2、反向代理方式需要部署在獨立的服務器上,對于應用的訪問會集中到反向代理所在的服務器,然后再進行認證和授權的動作。

圖2 反向代理的集成方式示意圖
用戶訪問應用系統首先要訪問反向代理服務器,代理服務器接收到訪問請求后到源服務器上獲取內容,把內容返回給用戶。統一認證反向服務器通常包括認證模塊,反向代理模塊和緩存,認證模塊負責訪問認證中心,獲取認證結果;反向代理主要進行地址轉換,將反向代理服務器中目錄映射到需要被代理的服務器上;緩存保存用戶訪問過的內容。具體實現步驟如下:
(1)用戶通過瀏覽器訪問web服務器,web服務器將請求遞交給反向服務器;
(2)用戶提交用戶名口令給反向代理服務器;
(3)反向代理服務器通過認證模塊訪問認證中心,驗證合法性;
(4)用戶通過認證后,認證系統形成一個憑證(token);
(5)認證中心通知反向代理服務器認證結果;
(6)反向代理從緩存或通過請求重定向到web服務器取回頁面和數據轉發給用戶,訪問流程結束。
當用戶登錄A系統web服務器成功后,登錄其他系統服務器時,反向代理服務器認證模塊從cookie中取得認證憑證,發送到認證中心驗證有效性,如有效可以繼續訪問,如無效則提示用戶重新進行認證。
正向代理的典型用途是為在防火墻內的局域網客戶端提供訪問Internet的途徑。正向代理還可以使用緩沖特性減少網絡使用率。反向代理的典型用途是將防火墻后面的服務器提供給Internet用戶訪問。反向代理還可以為后端的多臺服務器提供負載平衡,或為后端較慢的服務器提供緩沖服務。另外,反向代理還可以啟用高級URL策略和管理技術,從而使處于不同web服務器系統的web頁面同時存在于同一個URL空間下。
從集成部署上看,正向代理方式需要在應用系統安裝代理插件,應用系統還需做一定的定制改造,反向代理方式通常無需應用系統進行開發改造。因此相對來說正向代理是一種緊耦合式的集成方式,反向代理為一種松耦合的集成方式。
由于正向代理方式在應用系統端安裝了代理插件,系統與認證中心的通信及有關邏輯處理由插件來完成,因此正向代理方式效率和性能相對反向代理方式較高,反向代理方式對代理服務器的性能要求較高,若應用系統較多,訪問量較大時此處容易形成瓶頸。
正向代理較反向代理技術相對成熟。
反向代理方式通過瀏覽器傳遞了認證憑證,一定程度上存在著被攔截的安全隱患。還有反向代理方式使用統一的用戶名密碼只能通過統一的門戶登錄認證代理服務器不能通過原系統登錄入口實現認證,如果認證服務器已經認證過的用戶在其自身業務系統中的密碼修改了,那么如果用以前的密碼在認證服務器上登錄也可能正常登錄,這需要一定的機制加以解決。
統一認證集成方案中正向代理方式和反向代理方式各有利弊,正向代理技術較反向代理技術更為成熟。在企業局域網內的可做少量改造的應用系統建議采用正向代理技術,若原系統不能改造或自身認證授權體系較復雜且存在B/S、c/s混用的系統建議采用反向代理技術進行集成。