王強
?
文獻共享平臺中統一認證技術研究與實現
王強
(天津市科學技術信息研究所 科技信息中心,天津 300074)
針對文獻資源共享過程中出現的多點登錄問題,首次提出利用反向代理技術實現統一認證。通過搭建代理服務器,對所有文獻資源的URL地址進行代理轉換,實現了對文獻資源的代理訪問, 避免了傳統統一認證系統的跨域問題。通過特殊URL參數完成文獻資源自動登錄,實現單點登錄。對每次訪問進行身份鑒定,禁止非授權訪問,解決了代理服務的身份認證問題,最終實現了一種基于反向代理技術的統一認證系統。系統不需要對文獻資源進行改造即可實現統一認證,解決了多點登錄問題。
統一認證;單點登錄;文獻共享;反向代理
文獻資源共享是文獻共享平臺的核心功能,但一直面臨著一個問題,如何安全高效的共享文獻資源。傳統的方法是用戶登錄平臺后再分別登錄各個文獻資源系統。這樣會產生三個問題:(1)平臺管理員需要為用戶在不同資源系統里設置賬號和密碼,工作量巨大且容易出錯;(2)如果為了減少工作量,設置了簡單或重復的賬戶名密碼,用戶信息極易泄露,資源系統存在安全隱患[1];(3)用戶需要多點登錄,使用不方便。因此,問題的關鍵是單點登錄。
單點登錄,指的是用戶只需要主動進行一次身份認證,就可以訪問權限范圍內的所有應用系統,無須重復認證,即“一處登錄,多處訪問”[1]。目前對單點登錄的研究主要集中在基于票據的CAS(Central Authentication Service)協議[2]、基于XML(Extensible Markup Language,可擴展標記語言)的SAML(Security Assertion Markup Language,安全斷言標記語言)標準、基于Cookie的解決方案以及OpenID和OAuth2.0。CAS協議的基礎思想是通過唯一的身份票據來獲取對應不同服務使用請求的服務票據.通過服務票據來訪問服務[3]。文獻[3-4]研究了CAS單點登錄系統的設計與實現,并分別針對CAS的權限控制和單點退出缺陷進行了改進。SAML利用斷言機制實現跨平臺的認證和授權,身份提供者提供斷言確定用戶身份,服務提供者利用斷言控制用戶的訪問權限,文獻[5]提出了一種基于SAML的Web服務單點登錄模型,并給出了具體實現。文獻[6]則針對SAML的不足,在站群方面對SAML進行了改進。基于Cookie的解決方案主要是利用Cookie和URL重定向機制完成用戶身份信息的共享與傳遞,實現單點登錄。文獻[7-8]研究了基于Cookie的單點登錄實現,文獻[7]針對跨域問題提出了一種基于Cookie冗余技術的單點登錄方案。文獻[8]在此基礎上利用加密機制提出了一種可變Cookie的單點登錄方案。文獻[9]分析總結了當前在Web應用中熱門的單點登錄系統的各種實現策略,并針對基于Web請求代理的實現策略給出了一個簡單的系統實現。文獻[10]利用OpenID和OAuth2.0技術實現了用戶身份信息在互聯網上的安全共享。。在信息資源共享方面;文獻[11]研究了以信息資源整合方式進行資源共享的平臺的設計與開發,文獻[12]主要研究以接口方式對不同子系統的科技信息資源進行共享。文獻[13-15]研究了統一認證在圖書館各業務系統之間的應用,但對文獻共享平臺與外購文獻資源的統一認證研究較少。綜合來說,目前國內對Web系統單點登錄問題的研究主要集中在如何設計和實現單點登錄系統,但對遺留Web系統的單點登錄問題研究較少,對文獻共享平臺與外購文獻資源的單點登錄問題的研究更是少之又少。
目前主流的單點登錄的核心策略就是統一認證,基本思想是建立統一的認證服務來代理所有的應用系統的Web請求,由認證服務統一處理用戶的登錄請求,避免多點登錄。當用戶訪問應用系統時,Web請求將先傳入認證服務,用戶完成認證后再將請求以及用戶信息一并轉發給應用系統。除了認證服務外,需要對每個應用系統開發一個Web請求過濾器,攔截所有的請求,確保用戶訪問的所有請求都會先被認證服務所處理。文獻[9]詳細闡述了這類系統的實現原理與過程。而在文獻資源共享中,除了自建的資源庫,各個應用系統都屬于外購資源庫,通常無法進行二次定制開發,所以無法直接應用主流的單點登錄方案。針對這個問題,本文提出一種基于反向代理的統一認證系統,這種認證系統較好的解決文獻共享平臺中的統一認證問題。
反向代理技術不僅僅可以代理內網服務器,也可以代理外網服務器,實際上只要可以被訪問的服務器都可以被反向代理服務器代理,所有對被代理服務器的訪問都會自動轉換成對反向代理服務器的訪問,這一特點非常適合進行統一認證。各種文獻資源服務器就是被代理服務器,而反向代理服務器就是這些資源的統一認證服務器。
統一認證系統不需要對每個文獻資源進行二次開發,而是通過預先制定的規則,把所有資源的真實URL地址自動轉換成認證服務的代理地址,用戶通過轉換后的代理地址訪問資源。統一認證系統借鑒了反向代理的思想,也就是說用戶并不會直接訪問資源,而是通過認證服務器間接使用。統一認證系統原理如圖1。
認證系統包含兩種服務、七個模塊。文獻平臺Web服務提供文獻平臺基本的Web功能,為方便描述本文簡稱為平臺服務,這里主要介紹與統一認證相關的兩個模塊,資源入口模塊和權限控制模塊;統一認證服務主要提供統一認證功能,包括地址轉換模塊、自動登錄模塊、權限檢查模塊、獲取網頁模塊和靜態地址替換五個模塊。

圖1 基于反向代理的統一認證系統原理圖
系統整體架構如下圖2:

圖2 統一認證系統架構圖
資源入口模塊負責給用戶提供資源的代理地址入口;權限控制模塊負責控制用戶的訪問權限;地址轉換模塊負責用戶和資源之間的地址轉換,為用戶提供轉換后的代理地址,為各個資源提供轉換前的實際地址;自動登錄模塊判斷是否需要二次登錄,如果需要則向平臺服務獲取資源認證信息并自動登錄,反之則跳過此模塊;權限檢查模塊負責檢查用戶的權限,與權限控制模塊共同完成權限控制,避免用戶越權訪問;獲取網頁模塊負責向各個資源獲取網頁內容;靜態地址替換負責腳本和圖像文件的地址替換,主要用來提高性能。
傳統的統一認證系統認證前使用資源A與認證后使用資源B的流程不一樣,涉及到跨域之間的身份共享問題。新系統的統一認證服務本質上代理服務,并不維護用戶的身份狀態信息,不存在跨域間的身份共享問題,因此認證前后使用資源的流程都相同,用戶只需要得到資源入口地址,即可自動二次登錄完成認證。
系統詳細流程如下圖3。
治療前兩組PCO2、PO2兩項血氣指標和心率相近,P>0.05;治療后觀察組PCO2、PO2兩項血氣指標和心率優于對照組,P<0.05。如表2.
(1)用戶向平臺服務發出資源A使用請求,平臺檢查用戶未登錄,返回登錄頁面提示用戶進行登錄;
(2)用戶輸入身份信息進行首次登錄,登錄成功后返回資源A的代理地址,因為所有的文獻資源都由統一認證服務進行代理,所以這個地址指向了統一認證服務;
(3)用戶通過平臺返回的代理地址向統一認證服務發出請求;
(4)統一認證服務收到請求后,根據Cookie信息獲取當前登錄用戶,根據URL地址獲取當前使用的資源A;

圖3 統一認證系統詳細流程圖
(5)統一認證服務向平臺服務請求驗證用戶是否擁有資源A的使用權限;
(6)權限驗證通過,平臺服務返回資源A的認證信息;
(7)統一認證服務判斷是否需要二次登錄;
(8)統一認證服務利用第6步返回的認證信息進行二次登錄;
(9)二次登錄成功,返回請求的資源;
在文獻平臺的統一認證系統中,統一認證服務是核心,負責所有文獻資源的二次登錄和Web請求代理工作。具體的工作流程如下圖4。
(1)地址轉換,用戶訪問的地址都是代理地址,并不是真正的文獻資源地址,因此統一認證服務首先需要把代理地址轉換成實際地址,主要利用正則表達式完成;
(2)權限檢查,統一認證服務向平臺服務驗證用戶是否擁有資源的使用權限,實現對資源的訪問控制。除了校驗權限外,權限檢查還可以獲取到資源的用戶名、密碼、以及登錄地址等跟認證信息,以供自動登錄使用。
(3)自動登錄,權限校驗完成后,統一認證服務需要判斷是否第一次訪問應用,如果是,則自動進行二次登錄,反之則跳過自動登錄。自動登錄主要是利用上一步獲取的認證信息模擬瀏覽器進行表單提交;

圖4 統一認證服務流程圖
(4)獲取網頁,自動登錄后就會獲取資源的網頁信息。此過程需要確保統一認證服務能夠返回與原始響應一致的HTTP狀態碼;否則可能出錯;
(5)地址逆向轉換,這一步主要是對網頁中的URL地址進行轉換,生成包含代理地址的網頁,方便用戶后續繼續進行代理請求;
(6)靜態地址替換,為了降低統一認證服務的負載,部分圖片和腳本文件就跳過統一認證服務,直接從遠程服務器下載;
本文所研究的統一認證服務不存在跨域信息共享問題,重點在于統一認證服務器可以正確處理HTTP請求的方法,文獻[17]詳細列出了HTTP協議目前支持的所有方法。但也需要解決下面兩個問題:
(1)如何實現對用戶的訪問控制
統一認證服務是無狀態的,如何確保用戶在權限范圍內使用資源,需要對所有Web請求進行鑒權,即向平臺服務確認當前用戶是否有權限使用某個資源。統一認證服務提交當前用戶和需要使用的資源,Web服務通過查詢用戶-資源權限控制表來決定鑒權是否通過。
(2)如何在平臺服務與統一認證服務之間共享用戶信息
平臺服務和統一認證服務都采用HTTP協議,它們之間通過Cookie共享當前的用戶狀態信息。雖然不同域名只能訪問各自的Cookie,但是下級域名卻可以訪問上一級域名的Cookie。因此只要確保兩個服務擁有相同的一級域名即可,平臺服務把當前登錄用戶信息寫入一級域名的Cookie,統一認證服務通過一級域名的Cookie來獲取當前用戶,并且在每次鑒權時都通知平臺服務刷新當前用戶的Session超時時間,避免用戶超時。
目前對文獻資源的共享大多采用IP網段內自動認證方式,對于非IP網段的用戶,主要是利用VPN進入內網完成認證,多見于高校圖書館。但這種方式需要安裝VPN客戶端或者瀏覽器插件,比較繁瑣,而且需要考慮內網的安全性。另外,對于不支持IP網段自動認證的資源,這種方式就無法進行共享。本文研究的統一認證系統通過代理服務完成自動認證,用戶不會進入內網,沒有安全性問題。使用時也不區分用戶IP,只要可以訪問因特網即可共享文獻資源,方便簡單,已經在天津文獻平臺的中實際應用。
[1] 郭豪, 王國才, 羅聘. 一種基于Cookie的跨域單點登錄方案設計[J]. 計算機工程與科學, 2017, 39(7): 1295-1299.
[2] JASIG. CAS協議[OL]. (2016-9-29)[2018-9-27]. https: // apereo.github.io/cas/4.2.x/protocol/CAS-Protocol.html.
[3] 趙晉, 楊旭東. 基于 CAS 的單點登錄系統的研究與實現[J]. 軟件, 2016, 37(11): 119-124.
[4] 劉峰, 王崢, 曹華平等. 基于CAS的門戶單點登錄方案[J]. 計算機系統應用, 2011, 20(6): 77-80.
[5] 張慧, 李建華, 馬華. 一種基于SAML的Web服務單點登錄模型研究與實現[J]. 計算機系統應用, 2008, 17(7): 49-52.
[6] 高昊江, 肖田元. 基于SAML改進的單點登錄模型研究[J]. 計算機工程與設計, 2011, 32(3): 827-829.
[7] FENG Weihua, LIU Yali. Design and implementation of unified authentication system on cookie[J]. Computer Engineering and Design, 2010, 31(23): 4971-4975.
[8] WANG Guowei, XUE Manjun. Variable cookies based cross domain single sign on[J]. Computer Engineering and Design, 2012, 33(8): 2931-2935.
[9] XU Yan, Ji Yongzhi. Research and Implementation of Single Sign-On Mechanisms for Web Applications[J]. Computer Engineering, 2006, 32(10): 271-273.
[10] 劉艷民, 鄂海紅. 基于OpenID2. 0 的認證授權系統的分析與設計[J]. 軟件, 2015, 36(10): 01-04.
[11] 施叢叢, 陳名生, 楊建業等. 水利信息資源整合共享系統設計[J]. 軟件, 2015, 36(9): 55-59.
[12] 黃沛. 基于RESTful架構的科技信息共享接口系統的設計[J]. 軟件, 201, 39(7): 170-172.
[13] 林偉明. 基于JasigCAS實現圖書館統一身份認證——以深圳大學圖書館為例[J]. 現代情報, 2012, 毛海波, 劉柏嵩. 基于Shibboleth的館際跨域認證系統設計[J]. 現代情報, 2012, 32(5): 30-33.
[14] 王政軍, 俞小怡, 金玉玲. 利用開源軟件FreeRADIUS構建圖書館統一認證平臺的研究與實現[J]. 現代情報, 2016, 36(5): 104-109.
[15] 宗娜, 魏更宇. HTTP與CoAP的協議轉換代理的研究[J]. 軟件, 2015, 36(10): 77-82.
[16] 阮曉龍. HTTP協議狀態檢測與性能分析軟件的設計與實現[J]. 軟件, 2015, 36(7): 136-141.
Research and Implementation of Uniform Authentication Mechanisms for Literature Sharing Platform
WANG Qiang
(Center of Science and technology information, Tianjin Institute of science and technology information, Tianjin 300074, China)
To address the problem of multi-sign on in the process of literature sharing,this paper uses the reverse proxy technology to achieve uniform authentication firstly. By setting up a proxy server, address conversion is performed on the URL of all literature systems, and proxy access to literature systems is realized, which avoids the cross-domain problem of traditional uniform authentication system. To achieve single sign-on, the proxy server performs a automatic login by the special URL parameters. It authenticates all access, prohibits unauthorized access, solves the identity authentication problem, and finally realizes a unified authentication system based on reverse proxy technology. The system can realize uniform authentication without reconstructing literature systems and solves the problem of multi-sign on.
Uniform authentication; Single sign-on; Literature sharing; Reverse proxy
TP311.52
A
10.3969/j.issn.1003-6970.2018.11.042
王強(1985-),男,碩士研究生,工程師,主要研究方向:信息資源管理、統一認證。
王強. 文獻共享平臺中統一認證技術研究與實現[J]. 軟件,2018,39(11):202-206