SSO身份統(tǒng)一認證系統(tǒng)技術(shù)實現(xiàn)_第1頁
SSO身份統(tǒng)一認證系統(tǒng)技術(shù)實現(xiàn)_第2頁
SSO身份統(tǒng)一認證系統(tǒng)技術(shù)實現(xiàn)_第3頁
SSO身份統(tǒng)一認證系統(tǒng)技術(shù)實現(xiàn)_第4頁
SSO身份統(tǒng)一認證系統(tǒng)技術(shù)實現(xiàn)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、用戶身份統(tǒng)一認證系統(tǒng)技術(shù)實現(xiàn)方案用戶身份統(tǒng)一認證系統(tǒng) 西安維信軟件有限公司2014年4月22日目 錄一、認證中心的主要功能:3二、認證中心的設(shè)計要求:3三、對業(yè)務(wù)系統(tǒng)的要求:4四、認證中心的登錄4五、SSO驗證實現(xiàn)過程5六、接口設(shè)計7七、業(yè)務(wù)系統(tǒng)的集成工作10一、 認證中心的主要功能:1) 用戶登錄認證(平臺機構(gòu)、用戶名和密碼的校驗、數(shù)字證書簽名校驗、實時短信校驗)2) 憑證生成和傳遞3) 憑證有效性檢查4) 記錄日志、提供審計5) 關(guān)聯(lián)系統(tǒng)信息的維護6) 證書的管理和公共服務(wù)二、 認證中心的設(shè)計要求:1) 考慮到憑證的安全性,引入了加密和數(shù)字簽名技術(shù);2) 不提供注冊功能,而是分別在各自應(yīng)用

2、進行注冊,但提供到各個系統(tǒng)的注冊鏈接;3) 注銷系統(tǒng)時,只需清除認證中心的Session信息即可,其它已經(jīng)通過認證登錄過的業(yè)務(wù)系統(tǒng)不受影響;4) 各應(yīng)用系統(tǒng)的用戶信息分別各自管理,綜合接入平臺提供平臺統(tǒng)一機構(gòu)和統(tǒng)一用戶信息的生成和維護功能,并提供平臺統(tǒng)一用戶和應(yīng)用系統(tǒng)用戶的綁定功能;5) 認證中心專有憑證模塊負責(zé)憑證的創(chuàng)建,解析及驗證,并對外提供服務(wù)接口;6) 業(yè)務(wù)系統(tǒng)可根據(jù)憑證得到用戶的相關(guān)信息,比如業(yè)務(wù)系統(tǒng)用戶機構(gòu)、用戶名等信息,認證中心對外提供用戶信息獲取服務(wù);7) 提供應(yīng)用系統(tǒng)管理功能,方便統(tǒng)計登錄行為,提供審計和日志功能,方便將其他應(yīng)用系統(tǒng)經(jīng)過簡單配置,就可加入認證整合系統(tǒng)中,方便證

3、書的注冊、注銷、查詢等;8) 為了確保認證中心的健壯,系統(tǒng)支持熱備份等功能。三、 對業(yè)務(wù)系統(tǒng)的要求:1) 憑證信息的相互傳送都是已加密的方式進行傳送,即使憑證信息被截取到,也無法解析到憑證信息中的內(nèi)容,各業(yè)務(wù)系統(tǒng)只可使用自己的私鑰才可以解密憑證信息;2) 業(yè)務(wù)系統(tǒng)不可以每次都去認證中心驗證,所以可將憑證保存在會話中,即Session的方式;3) 業(yè)務(wù)系統(tǒng)不要過于復(fù)雜,以方便和現(xiàn)有系統(tǒng)的整合,建議采用過濾器或Servlet方式;4) 由于業(yè)務(wù)系統(tǒng)的權(quán)限管理機制可能不同,故認證中心不做權(quán)限管理,由業(yè)務(wù)系統(tǒng)自己負責(zé);5) 業(yè)務(wù)系統(tǒng)和認證中心的通信采用Web Services 接口服務(wù)。四、 認證中心

4、的登錄業(yè)務(wù)系統(tǒng)要使用認證中心進行驗證操作,第一次需要登錄一次認證中心,之后的認證的操作則不需要再次登錄認證中心。當認證中心登錄成功之后,用戶便可在認證中心的“業(yè)務(wù)應(yīng)用列表”當中選擇相應(yīng)的業(yè)務(wù)系統(tǒng),進行業(yè)務(wù)系統(tǒng)的用戶登錄驗證操作。五、 SSO驗證實現(xiàn)過程1、 當用戶要使用認證中心進行業(yè)務(wù)系統(tǒng)的統(tǒng)一認證時候,分為兩種情況:a) 用戶未登錄過統(tǒng)一認證系統(tǒng)此時用戶的瀏覽器界面首先會跳轉(zhuǎn)到認證中心的登錄地址,用戶輸入相關(guān)的登錄信息(機構(gòu)號、柜員號、密碼、短信效驗碼等),待驗證通過后,則會跳轉(zhuǎn)到認證中心的“業(yè)務(wù)系統(tǒng)列表”頁面;b) 用戶已登錄過統(tǒng)一認證系統(tǒng)如果用戶之前已經(jīng)登錄過認證中心,則當前用戶的瀏覽器

5、頁面會直接跳轉(zhuǎn)到“業(yè)務(wù)系統(tǒng)列表”。2、 當進入到“業(yè)務(wù)系統(tǒng)列表”之后,用戶通過選擇相應(yīng)的業(yè)務(wù)系統(tǒng),然后頁面會跳轉(zhuǎn)到業(yè)務(wù)系統(tǒng)中“用于重定向到SSO驗證服務(wù)認證地址的轉(zhuǎn)發(fā)地址”,跳轉(zhuǎn)完成后,業(yè)務(wù)系統(tǒng)自身會生成一個用于驗證本次認證請求的隨機碼,并攜帶認證中心所提供的應(yīng)用編號,向認證中心發(fā)起一次用戶驗證請求(即將頁面重定向到認證中心所提供的“用于業(yè)務(wù)系統(tǒng)請求SSO驗證服務(wù)的認證地址”)。3、 當認證中心接收到業(yè)務(wù)系統(tǒng)發(fā)起的用戶驗證請求后,首先認證中心會從SSO服務(wù)端的Session中獲取到當前所登錄用戶的用戶信息,然后再從業(yè)務(wù)系統(tǒng)的請求當中接收到由業(yè)務(wù)系統(tǒng)所發(fā)送的隨機碼和應(yīng)用編號,根據(jù)認證中心登陸的用

6、戶編號,業(yè)務(wù)系統(tǒng)的應(yīng)用編號,從數(shù)據(jù)庫查詢到業(yè)務(wù)系統(tǒng)所需要的映射用戶信息。然后再將業(yè)務(wù)系統(tǒng)所發(fā)送的隨機碼等信息通過相關(guān)加密方式生成一個用于本次業(yè)務(wù)系統(tǒng)登錄認證的憑證信息,返還給業(yè)務(wù)系統(tǒng)。4、 業(yè)務(wù)系統(tǒng)通過回調(diào)地址接收到認證中心所返回的憑證信息,然后對其的可用性進行檢測(驗簽、隨機碼比對、憑證可用性效驗等)。如果當前憑證信息正確無誤且可用,則對其進行解密。隨后業(yè)務(wù)系統(tǒng)根據(jù)自己的需求,從憑證信息中獲取到相應(yīng)的用戶信息,加載自己系統(tǒng)的用戶權(quán)限、菜單等信息,跳轉(zhuǎn)到業(yè)務(wù)系統(tǒng)自身的系統(tǒng)界面,即完成了一次SSO登錄驗證過程。六、 接口設(shè)計1) 憑證的設(shè)計(算法、結(jié)構(gòu))a) 憑證采用RAS非對稱密碼算法,服務(wù)端

7、采用電子信封和數(shù)字簽名生成一個用于業(yè)務(wù)系統(tǒng)登錄驗證的憑證信息;b) 憑證的數(shù)據(jù)采用JSON格式存儲,結(jié)構(gòu)包括:i. 當驗證成功后,返回響應(yīng)碼(00)和驗證通過的用戶信息憑證,如:響應(yīng)碼"user":"brhId":"用戶機構(gòu)編號","userId":"用戶編號","caSerialId":"CA證書序列號",ssoUseId:”SSO用戶編號”,"tokenMark":"憑證唯一標識","clientMar

8、k":"業(yè)務(wù)系統(tǒng)所生成的隨機碼","signData":"簽名值";ii. 當驗證失敗后,則返回響應(yīng)碼和未通過驗證的異常信息憑證;響應(yīng)碼"errInfo":"詳細的異常信息說明"。響應(yīng)碼說明:響應(yīng)碼響應(yīng)碼詳細說明00驗證通過01代表當前所請求的應(yīng)用信息不存在;02代碼當前所請求的應(yīng)用暫時不可用;03代表當前所請求的應(yīng)用在SSO服務(wù)端暫為添加映射用戶信息;04代表當前所請求的應(yīng)用在SSO服務(wù)端中的映射用戶信息不可用;09其他異常信息;2) 認證中心提供用于業(yè)務(wù)系統(tǒng)請求SSO驗證服務(wù)的認證

9、地址業(yè)務(wù)系統(tǒng)每次使用SSO驗證服務(wù),需請求以下鏈接:http:/serverIp:port/verificationApp?appId=應(yīng)用編號&clientMark=業(yè)務(wù)系統(tǒng)隨機碼 應(yīng)用編號將會由SSO服務(wù)提供,業(yè)務(wù)系統(tǒng)隨機碼由業(yè)務(wù)系統(tǒng)自身生成。3) 業(yè)務(wù)系統(tǒng)提供用于重定向到SSO驗證服務(wù)認證地址的轉(zhuǎn)發(fā)地址當需要進行登錄驗證時,SSO系統(tǒng)首先跳轉(zhuǎn)到此地址,然后由業(yè)務(wù)系統(tǒng)自身生成一個隨機碼,并攜帶認證系統(tǒng)所分配給自己的應(yīng)用編號,重定向到認證中心所提供的用于業(yè)務(wù)系統(tǒng)請求SSO驗證服務(wù)的認證地址:http:/clientIp:port/SSOLoginRedirect4) 業(yè)務(wù)系統(tǒng)提供接收

10、服務(wù)端返回憑證的回調(diào)地址 http:/clientIp:port/SSOLoginServlet 接收服務(wù)端返回的憑證(String):響應(yīng)碼+憑證業(yè)務(wù)應(yīng)用系統(tǒng)讀取響應(yīng)碼判斷憑證是否正確返回,解密憑證讀取隨機碼(clientMark),驗證隨機碼是否是業(yè)務(wù)系統(tǒng)生成。5) 認證中心提供業(yè)務(wù)系統(tǒng)用于驗證本次憑證相關(guān)信息的WebService接口地址當業(yè)務(wù)通過回調(diào)地址接收到SSO服務(wù)端的憑證信息后,需要對憑證信息進行相關(guān)的驗證操作,此時就需要調(diào)用SSO服務(wù)端的WebService接口進行驗證,此接口地址為:http:/serverIp:port/service/SSOService?wsdl調(diào)用方法

11、及說明:方法名稱方法說明方法參數(shù)返回結(jié)果verificationToken用于驗證憑證信息是否可用String,憑證唯一標識(唯一標識為憑證信息中的tokenMark值)Boolean,憑證是否可用6) 認證中心提供業(yè)務(wù)系統(tǒng)用于本地驗簽,解密數(shù)據(jù)相關(guān)方法相關(guān)的方法都位于sso_client.jar文件當中。方法名稱方法說明方法參數(shù)返回結(jié)果verificationSign用于驗證憑證信息是否由SSO服務(wù)端所發(fā)送String,SSO服務(wù)端返回的憑證信息Boolean,驗簽結(jié)果deAppToken用于解密服務(wù)端所返回的憑證信息中的數(shù)據(jù)String,SSO服務(wù)端返回的憑證信息String,解密后的憑證

12、信息7) 認證中心提供業(yè)務(wù)系統(tǒng)用于調(diào)用SSO驗證服務(wù)所需的配置文件業(yè)務(wù)系統(tǒng)調(diào)用SSO驗證服務(wù)所有所需的相關(guān)配置參數(shù)均存放于ssoCperties文件當中,文件當中主要包含以下幾條屬性信息:serviceUrl:業(yè)務(wù)系統(tǒng)用于調(diào)用SSO驗資服務(wù)的遠程WebService地址;privateKey:業(yè)務(wù)系統(tǒng)用于驗簽,解密服務(wù)端返回憑證信息的私鑰信息。七、 業(yè)務(wù)系統(tǒng)的集成工作業(yè)務(wù)系統(tǒng)如要整合SSO用戶驗證系統(tǒng),需要按以下步驟對現(xiàn)有業(yè)務(wù)系統(tǒng)進行改造,為了各業(yè)務(wù)系統(tǒng)更方便的整合SSO用戶驗證服務(wù),以下步驟中會出現(xiàn)部分代碼示例,其中的代碼可能對部分業(yè)務(wù)系統(tǒng)并不適用,各業(yè)務(wù)系統(tǒng)也可以更具具體

13、情況更改其中的代碼。1、 將相關(guān)的JAR包、配置文件添加到項目當中:Ø sso_client.jar(該JAR包用于調(diào)用遠程SSO服務(wù)端相關(guān)驗證接口);Ø WebService相關(guān)JAR包,由于SSO服務(wù)端的WebService服務(wù)采用Xfire方式,所以業(yè)務(wù)系統(tǒng)需要自行添加Xfire的相關(guān)JAR包文件;Ø 將ssoCperties文件拷貝到業(yè)務(wù)系統(tǒng)的src目錄下,并根據(jù)情況修改其中的參數(shù)。2、 集成判斷用戶在線狀態(tài)功能: 可以通過Filter等技術(shù)方式,判斷業(yè)務(wù)系統(tǒng)的用戶是否已登錄。如果未登錄,調(diào)轉(zhuǎn)到SSO的認證地址http:/serverIp

14、:port/verificationApp?appId=應(yīng)用編號。3、 集成憑證接收、處理、頁面重定向功能:在業(yè)務(wù)系統(tǒng)的web.xml文件中增加以下內(nèi)容: <servlet> <servlet-name>SSOLoginRedirect</servlet-name> <servlet-class>com.webtec.servlet.SSOLoginRedirect</servlet-class> </servlet> <servlet> <servlet-name>SSOLoginServle&l

15、t;/servlet-name> <servlet-class>com.webtec.servlet.SSOLoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SSOLoginServle</servlet-name> <url-pattern>/ssoLogin</url-pattern> </servlet-mapping> <servlet-mapping> <ser

16、vlet-name>SSOLoginRedirect</servlet-name> <url-pattern>/ssoLoginRedirect</url-pattern> </servlet-mapping>創(chuàng)建用于重定向到SSO驗證服務(wù)認證地址的Servlet,以下為示例代碼:public class SSOLoginRedirect extends HttpServlet public void doPost(HttpServletRequest request, HttpServletResponse response) throw

17、s ServletException, IOException / 由業(yè)務(wù)系統(tǒng)自己生成一個隨機碼String clientMark = UUID.randomUUID().toString();/ 將頁面重定向到SSO驗證服務(wù)的認證地址response.sendRedirect("http:/serverIp:port/verificationApp?appId=app1&clientMark=" + clientMark);創(chuàng)建用于接收認證返回憑證的Servlet,以下為示例代碼:public class SSOLoginServlet extends HttpS

18、ervlet public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException / 獲取從SSO服務(wù)端返回的憑證信息String appToken = request.getParameter("appToken");/ 對SSO服務(wù)端返回的憑證信息進行驗簽操作boolean signState = SSOClientService.verificationSign(appToken);if(signState)/ 如果驗簽無誤則對憑證信息進行解密操作,SSOBean實體為對解密后的JSON對象進行封裝而成SSOBean ssoBean = SSOClientService.deAppToken(appToken);/ 調(diào)用SS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論