1. 程式人生 > >統一使用者認證和單點登入解決方案

統一使用者認證和單點登入解決方案

■ 康威 李凱

--------------------------------------------------------------------------------
 本文以某新聞單位多媒體資料庫系統為例,提出建立企業使用者認證中心,實現基於安全策略的統一使用者管理、認證和單點登入,解決使用者在同時使用多個應用系統時所遇到的重複登入問題。

隨著資訊科技和網路技術的迅猛發展,企業內部的應用系統越來越多。比如在媒體行業,常見的應用系統就有采編系統、排版系統、印刷系統、廣告管理系統、財務系統、辦公自動化系統、決策支援系統、客戶關係管理系統和網站釋出系統等。由於這些系統互相獨立,使用者在使用每個應用系統之前都必須按照相應的系統身份進行登入,為此使用者必須記住每一個系統的使用者名稱和密碼,這給使用者帶來了不少麻煩。特別是隨著系統的增多,出錯的可能性就會增加,受到非法截獲和破壞的可能性也會增大,安全性就會相應降低。針對於這種情況,統一使用者認證、單點登入等概念應運而生,同時不斷地被應用到企業應用系統中。

統一使用者管理的基本原理

一般來說,每個應用系統都擁有獨立的使用者資訊管理功能,使用者資訊的格式、命名與儲存方式也多種多樣。當用戶需要使用多個應用系統時就會帶來使用者資訊同步問題。使用者資訊同步會增加系統的複雜性,增加管理的成本。

例如,使用者X需要同時使用A系統與B系統,就必須在A系統與B系統中都建立使用者X,這樣在A、B任一系統中使用者X的資訊更改後就必須同步至另一系統。如果使用者X需要同時使用10個應用系統,使用者資訊在任何一個系統中做出更改後就必須同步至其他9個系統。使用者同步時如果系統出現意外,還要保證資料的完整性,因而同步使用者的程式可能會非常複雜。

解決使用者同步問題的根本辦法是建立統一使用者管理系統(UUMS)。UUMS統一儲存所有應用系統的使用者資訊,應用系統對使用者的相關操作全部通過UUMS完成,而授權等操作則由各應用系統完成,即統一儲存、分佈授權。UUMS應具備以下基本功能:

1.使用者資訊規範命名、統一儲存,使用者ID全域性惟一。使用者ID猶如身份證,區分和標識了不同的個體。

2.UUMS向各應用系統提供使用者屬性列表,如姓名、電話、地址、郵件等屬性,各應用系統可以選擇本系統所需要的部分或全部屬性。

3.應用系統對使用者基本資訊的增加、修改、刪除和查詢等請求由UUMS處理。

4.應用系統保留使用者管理功能,如使用者分組、使用者授權等功能。

5.UUMS應具有完善的日誌功能,詳細記錄各應用系統對UUMS的操作。

統一使用者認證是以UUMS為基礎,對所有應用系統提供統一的認證方式和認證策略,以識別使用者身份的合法性。統一使用者認證應支援以下幾種認證方式:

1. 匿名認證方式: 使用者不需要任何認證,可以匿名的方式登入系統。

2. 使用者名稱/密碼認證: 這是最基本的認證方式。

3. PKI/CA數字證書認證: 通過數字證書的方式認證使用者的身份。

4. IP地址認證: 使用者只能從指定的IP地址或者IP地址段訪問系統。

5. 時間段認證: 使用者只能在某個指定的時間段訪問系統。

6. 訪問次數認證: 累計使用者的訪問次數,使使用者的訪問次數在一定的數值範圍之內。

以上認證方式應採用模組化設計,管理員可靈活地進行裝載和解除安裝,同時還可按照使用者的要求方便地擴充套件新的認證模組。

認證策略是指認證方式通過與、或、非等邏輯關係組合後的認證方式。管理員可以根據認證策略對認證方式進行增、刪或組合,以滿足各種認證的要求。比如,某集團使用者多人共用一個賬戶,使用者通過使用者名稱密碼訪問系統,訪問必須限制在某個IP地址段上。該認證策略可表示為: 使用者名稱/密碼“與”IP地址認證。

PKI/CA數字證書認證雖不常用,但卻很有用,通常應用在安全級別要求較高的環境中。PKI(Public Key Infrastructure)即公鑰基礎設施是利用公鑰理論和數字證書來確保系統資訊保安的一種體系。

在公鑰體制中,金鑰成對生成,每對金鑰由一個公鑰和一個私鑰組成,公鑰公佈於眾,私鑰為所用者私有。傳送者利用接收者的公鑰傳送資訊,稱為數字加密,接收者利用自己的私鑰解密; 傳送者利用自己的私鑰傳送資訊,稱為數字簽名,接收者利用傳送者的公鑰解密。PKI通過使用數字加密和數字簽名技術,保證了資料在傳輸過程中的機密性(不被非法授權者偷看)、完整性(不能被非法篡改)和有效性(資料不能被簽發者否認)。

數字證書有時被稱為數字身份證,數字證書是一段包含使用者身份資訊、使用者公鑰資訊以及身份驗證機構數字簽名的資料。身份驗證機構的數字簽名可以確保證書資訊的真實性。

完整的PKI系統應具有權威認證機構CA(Certificate Authority)、證書註冊系統RA(Registration Authority)、金鑰管理中心KMC(Key Manage Center)、證書釋出查詢系統和備份恢復系統。CA是PKI的核心,負責所有數字證書的簽發和登出; RA接受使用者的證書申請或證書登出、恢復等申請,並對其進行稽核; KMC負責加密金鑰的產生、存貯、管理、備份以及恢復; 證書釋出查詢系統通常採用OCSP(Online Certificate Status Protocol,線上證書狀態協議)協議提供查詢使用者證書的服務,用來驗證使用者簽名的合法性; 備份恢復系統負責數字證書、金鑰和系統資料的備份與恢復。

單點登入

單點登入(SSO,Single Sign-on)是一種方便使用者訪問多個系統的技術,使用者只需在登入時進行一次註冊,就可以在多個系統間自由穿梭,不必重複輸入使用者名稱和密碼來確定身份。單點登入的實質就是安全上下文(Security Context)或憑證(Credential)在多個應用系統之間的傳遞或共享。當用戶登入系統時,客戶端軟體根據使用者的憑證(例如使用者名稱和密碼)為使用者建立一個安全上下文,安全上下文包含用於驗證使用者的安全資訊,系統用這個安全上下文和安全策略來判斷使用者是否具有訪問系統資源的許可權。遺憾的是J2EE規範並沒有規定安全上下文的格式,因此不能在不同廠商的J2EE產品之間傳遞安全上下文。
 
目前業界已有很多產品支援SSO,如IBM的WebSphere和BEA的WebLogic,但各家SSO產品的實現方式也不盡相同。WebSphere通過Cookie記錄認證資訊,WebLogic則是通過Session共享認證資訊。Cookie是一種客戶端機制,它儲存的內容主要包括: 名字、值、過期時間、路徑和域,路徑與域合在一起就構成了Cookie的作用範圍,因此用Cookie方式可實現SSO,但域名必須相同; Session是一種伺服器端機制,當客戶端訪問伺服器時,伺服器為客戶端建立一個惟一的SessionID,以使在整個互動過程中始終保持狀態,而互動的資訊則可由應用自行指定,因此用Session方式實現SSO,不能在多個瀏覽器之間實現單點登入,但卻可以跨域。

實現SSO有無標準可尋?如何使業界產品之間、產品內部之間資訊互動更標準、更安全呢?基於此目的,OASIS(結構化資訊標準促進組織)提出了SAML解決方案(有關SAML的知識參看連結)。

使用者認證中心實際上就是將以上所有功能、所有概念形成一個整體,為企業提供一套完整的使用者認證和單點登入解決方案。一個完整的使用者認證中心應具備以下功能:

1. 統一使用者管理。實現使用者資訊的集中管理,並提供標準介面。

2. 統一認證。使用者認證是集中統一的,支援PKI、使用者名稱/密碼、B/S和C/S等多種身份認證方式

3. 單點登入。支援不同域內多個應用系統間的單點登入。

使用者認證中心提供了統一認證的功能,那麼使用者認證中心如何提供統一授權的功能呢?這就是授權管理中,其中應用最多的就是PMI。

PMI(Privilege Management Infrastructure,授權管理基礎設施)的目標是向用戶和應用程式提供授權管理服務,提供使用者身份到應用授權的對映功能,提供與實際應用處理模式相對應的、與具體應用系統開發和管理無關的授權和訪問控制機制,簡化具體應用系統的開發與維護。PMI是屬性證書(Attribute Certificate)、屬性權威(Attribute Authority)、屬性證書庫等部件的集合體,用來實現許可權和證書的產生、管理、儲存、分發和撤銷等功能。

PMI以資源管理為核心,對資源的訪問控制權統一交由授權機構統一處理,即由資源的所有者來進行訪問控制。同公鑰基礎設施PKI相比,兩者主要區別在於: PKI證明使用者是誰,而PMI證明這個使用者有什麼許可權,能幹什麼,而且PMI可以利用PKI為其提供身份認證。

單點登入通用設計模型

圖2是統一使用者認證和單點登入通用設計模型,它由以下產品組成:

1. PKI體系: 包括CA伺服器、RA伺服器、KMC和OCSP伺服器。

2. AA管理伺服器: 即認證(Authentication)和授權(Authorization)伺服器,它為系統管理員提供使用者資訊、認證和授權的管理。

3. UUMS模組: 為各應用系統提供UUMS介面。

4. SSO: 包括SSO代理和SSO伺服器。SSO代理部署在各應用系統的伺服器端,負責截獲客戶端的SSO請求,並轉發給SSO伺服器,如果轉發的是OCSP請求,則SSO伺服器將其轉發給OCSP伺服器。在C/S方式中,SSO代理通常部署在客戶端。

5. PMI: 包括PMI代理和PMI伺服器。PMI代理部署在各應用系統的伺服器端,負責截獲客戶端的PMI請求,並轉發給PMI伺服器。

6. LDAP伺服器: 統一儲存使用者資訊、證書和授權資訊。

為判斷使用者是否已經登入系統,SSO伺服器需要儲存一張使用者會話(Session)表,以記錄使用者登入和登出的時間,SSO伺服器通過檢索會話表就能夠知道使用者的登入情況,該表通常儲存在資料庫中。AA系統提供了對會話的記錄、監控和撤消等管理功能。為保證穩定與高效,SSO、PMI和OCSP可部署兩套或多套應用,同時提供服務。

連結

SAML

SAML(Security Assertion Markup Language,安全性斷言標記語言)是一種基於XML的框架,主要用於在各安全系統之間交換認證、授權和屬性資訊,它的主要目標之一就是SSO。在SAML框架下,無論使用者使用哪種信任機制,只要滿足SAML的介面、資訊互動定義和流程規範,相互之間都可以無縫整合。SAML規範的完整框架及有關資訊互動格式與協議使得現有的各種身份鑑別機制(PKI、Kerberos和口令)、各種授權機制(基於屬性證書的PMI、ACL、Kerberos的訪問控制)通過使用統一介面實現跨信任域的互操作,便於分散式應用系統的信任和授權的統一管理。

SAML並不是一項新技術。確切地說,它是一種語言,是一種XML描述,目的是允許不同安全系統產生的資訊進行交換。SAML規範由以下部分組成:

1. 斷言與協議: 定義XML格式的斷言的語法語義以及請求和響應協議。SMAL主要有三種斷言: 身份認證斷言、屬性斷言和訪問授權斷言。

2. 繫結與配置檔案: 從SAML請求和響應訊息到底層通訊協議如SOAP或SMTP的對映。

3. 一致性規範: 一致性規範設定了一種基本標準,必須滿足這一SAML標準的實現才能夠稱為一致性實現。這樣有助於提高互操作性和相容性。

4. 安全和保密的問題: SAML體系結構中的安全風險,具體而言就是SAML如何應對這些風險以及無法解決的風險。

要注意的是,SAML並不是專為SSO設計,但它卻為SSO的標準化提供了可行的框架。


---

(計算機世界報 2005年09月19日 第36期 C14、C15)

原文:http://www.cnblogs.com/AndyZheng/articles/297704.html

相關推薦

統一使用者認證登入解決方案

■ 康威 李凱 --------------------------------------------------------------------------------  本文以某新聞單位多媒體資料庫系統為例,提出建立企業使用者認證中心,實現基於安全策略的統一使用者

金雅拓推出業界首個針對智慧卡使用者增強的雲訪問管理登入解決方案

SafeNet Trusted Access現在支援智慧卡證書對雲應用的訪問,並將PKI技術引入雲和數字轉型計劃 阿姆斯特丹--(美國商業資訊)--金雅拓今日宣佈推出業界首創的解決方案,讓投資了公鑰基礎設施(PKI)安全應用的組織在向雲遷移時,能在不影響安全性和使用者體驗的情況下利用他們的現

統一身份認證登錄概念研究

進行 his 身份認證 cte 包含 產生 store log 但是 在研究、建設單位信息系統的集成和登錄時,自然想到了統一身份認證和單點登錄,首先遇到了這樣的問題,統一身份認證和單點登錄的概念是什麽,是不是某一個領域的術語,是不是有相應的標準和協議以及相關的解決方案,這讓

Spring Cloud 安全:整合OAuth2實現身份認證登入

1、概述 Spring Cloud 的安全模組可以為Spring Boot應用提供基於令牌的安全特性。具體講就是支援OAuth2協議來實現單點登入(SSO),可以很方便地在資源服務之間傳遞身份令牌,以及使用嵌入式的ZUUL代理來配置下游服務的認證。 在這篇文

Session跨域及登入解決方案

cookie機制 關於cookie和seesion的聯絡 cookie中會包含那些資訊 名字,值,過期時間,路徑,域 cookie會帶到http請求頭中傳送給服務端 如果cookie沒有設定過期時間的話,那麼cookie的預設生命週期是瀏覽器的會話 sessi

SSO CAS+Shiro+springmvc登入解決方案

第一節:單點登入簡介 第一步:瞭解單點登入 SSO主要特點是: SSO應用之間使用Web協議(如HTTPS) ,並且只有一個登入入口. SSO的體系中有下面三種角色: 1) User(多個) 2) Web應用(多個) 3) SSO認證中

著名ERP廠商的SSO登入解決方案介紹一

      SSO英文全稱Single Sign On,單點登入。SSO是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。它包括可以將這次主要的登入對映到其他應用中用於同一個使用者的登入的機制。認證系統的主要功能是將使用者的登入資訊和使用者資訊庫相比較,對使用者進行登入認證;認證成功後

Web應用跨域訪問及登入解決方案彙總

做過跨越多個網站的Ajax開發的朋友都知道,如果在A網站中,我們希望使用Ajax來獲得B網站中的特定內容,如果A網站與B網站不在同一個域中,那麼就出現了跨域訪問問題。Ajax的跨域訪問問題是現有的Ajax開發人員比較常遇到的問題。 IE對於跨域訪問的處理是,彈出警告框,提

SSO(登入)解決方案實施經驗介紹

        單點登入(SSO-Single Sign On),是目前企業應用系統整合的一種流行的解決方案,主要解決的是在多個應用系統中,使用者只需要經過一次登入認證,就可以訪問所有相互信任的應用系統。很多軟體廠商都提供了SSO解決方案,主要有IBM、SUN、ORACLE

Oracle的登入解決方案(Single Sign-On Solution)

Single Sign-On(SSO)即單點登入,在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。在此條件下,管理員無需修改或干涉使用者登入就能方便的實施希望得到的安全控制。 Oracle現有兩套單點登入的解決方案:Oracle Access Man

shiro整合redis實現分散式session登入

shiro是一款出色的許可權框架,能夠實現諸如登入校驗、許可權校驗等功能,預設情況下,shir將session儲存到記憶體中,這在應用分散式部署的情況下會出現session不一致的問題,所以我們要將session儲存到第三方,應用始終從第三方獲取session,從而保證分散式

為站點增加自動登入登入功能

一、自動登入功能與實現原理 需求分析 使用者一旦使用瀏覽器登入某個站點和關閉瀏覽器後,在以後兩個星期內,只要使用者啟動該瀏覽器訪問該站點的任何頁面時,都將自動完成登入。 很顯然,該功

FineReport泛微OA(Ecology)的登入整合方案

最近出現了很多關於帆軟報表和泛微OA的整合問題,均出現在“單點登入”上。直接也有相關的文章介紹一些FineReport和泛微整合的背景、價值等,以及FineReport和OA的深度整合的方案,但是並沒有提到單點登入的整合方案,今天就簡單介紹下FineReport和OA單點登

session共享登入 springboot的實踐思考

我這兩天公司需要一個收銀臺專案,讓我寫,我就直接把以前學的springboot搭建專案用上了,確實很方便,一個小時搭建完成。我就正常使用,沒有問題 但是今天出現一個問題,同事說我需要在你這個專案中獲得

登入——解決分散式專案中session共享問題

初學有感,希望各位大佬在下面批評指教,晚輩萬分感激!----------------------------------------------------------------------------------------------------------------

Spring Cloud OAuth2 實現使用者認證登入

文章較長,建議推薦,建議轉發,建議收藏,建議關注公眾號哈。 OAuth 2 有四種授權模式,分別是授權碼模式(authorization code)、簡化模式(implicit)、密碼模式(resource owner password credentials)、客戶端模式(client credenti

PHP 登入實現方案

單點登入SSO(Single Sign On)說得簡單點就是在一個多系統共存的環境下,使用者在一處登入後,就不用在其他系統中登入,也就是使用者的一次登入能得到其他所有系統的信任。單點登入在大型網站裡使用得非常頻繁,例如像阿里巴巴這樣的網站,在網站的背後是成百上千的子系統,使用者一次操作或交易可能涉及到幾十個子

SSO跨域登入實現方案

SSO簡介 定義: 傳統的單站點登入訪問授權機制是:登入成功後將使用者資訊儲存在session中,sessionId儲存在cookie中,每次訪問需要登入訪問的資源(url)時判斷當前session是否為空,為空的話跳轉到登入介面登入,不為空的話允許訪問。  單點登入是一種多站

登入終極方案之 CAS 應用及原理

Cookie的單點登入的實現方式很簡單,但是也問題頗多。例如:使用者名稱密碼不停傳送,增加了被盜號的可能。另外,不能跨域! 1、基於Cookie的單點登入的回顧 基於Cookie的單點登入核心原理: 將使用者名稱密碼加密之後存於Cookie中,之後訪問網站時

Hadoop 2.0中故障解決方案總結

Hadoop 1.0核心主要由兩個分支組成:MapReduce和HDFS,眾所周知,這兩個系統的設計缺陷是單點故障,即MR的JobTracker和HDFS的NameNode兩個核心服務均存在單點問題,該問題在很長時間內沒有解決,這使得Hadoop在相當長時間內僅適合離線儲存和