高校網(wǎng)絡(luò)與校園認(rèn)證單點登錄研究
高校網(wǎng)絡(luò)與校園應(yīng)用系統(tǒng)認(rèn)證單點登錄研究南通分公司2011年6月 ,(一) 項目背景目前我公司與越來越多的高校展開合作,以提升市場份額與用戶粘性。最近在校園寬帶發(fā)展中,我們發(fā)
高校網(wǎng)絡(luò)與校園應(yīng)用系統(tǒng)
認(rèn)證單點登錄研究
南通分公司
2011年6月
,(一) 項目背景
目前我公司與越來越多的高校展開合作,以提升市場份額與用戶粘性。最近在校園寬帶發(fā)展中,我們發(fā)現(xiàn)越來越多的高校已經(jīng)在“數(shù)字化校園”建設(shè)中實現(xiàn)了校內(nèi)所有系統(tǒng)的統(tǒng)一門戶單點登錄功能。
在于高校談及校園寬帶認(rèn)證時,不少高校提出需要將網(wǎng)絡(luò)認(rèn)證與高?,F(xiàn)有單點登錄系統(tǒng)進行融合,實現(xiàn)校園網(wǎng)絡(luò)與應(yīng)用系統(tǒng)的統(tǒng)一認(rèn)證,因此作者對此進行了研究,并給出了解決方案,希望可以對于其他地市公司起到一定的借鑒作用。
(二) 需求分析
校園統(tǒng)一身份認(rèn)證系統(tǒng)從用戶角度來說,設(shè)計的目標(biāo)必須一次認(rèn)證實現(xiàn)了網(wǎng)絡(luò)層面的認(rèn)證和數(shù)字校園應(yīng)用系統(tǒng)的同步認(rèn)證。當(dāng)訪問多個采用統(tǒng)一用戶管理和身份認(rèn)證系統(tǒng)的多個管理系統(tǒng)時,用戶只需要登錄一次。而從管理者角度來說,系統(tǒng)須達到如下目標(biāo):
(1)支持Web 技術(shù)框架,使得在對各個應(yīng)用系統(tǒng)實施基于Web 業(yè)務(wù)的應(yīng)用集成(EAI/B2Bi)的時候,能夠使用這個統(tǒng)一身份認(rèn)證服務(wù),進行身份認(rèn)證。
(2)方便使用,能夠提供統(tǒng)一、集中、有效的用戶管理,能夠盡可能地利用現(xiàn)有系統(tǒng)的身份認(rèn)證模塊及現(xiàn)有的用戶設(shè)置和權(quán)限設(shè)置,盡量保護現(xiàn)有的投資,減少新用戶設(shè)置和權(quán)限設(shè)置的費用,同時避免對現(xiàn)有系統(tǒng)進行大規(guī)模的修改。
(3)具有良好的擴展性和可集成性,不僅能支持現(xiàn)有的應(yīng)用系統(tǒng)及用戶系統(tǒng),當(dāng)有新的應(yīng)用被部署或開發(fā)的時候,這個統(tǒng)一身份認(rèn)證服務(wù)還可以作為其身份認(rèn)證模塊的形式工作。這就要求系統(tǒng)必須具有帳號關(guān)聯(lián)的功能,能夠記錄已有應(yīng)用系統(tǒng)的用戶帳號與用戶中心的用戶帳號的對應(yīng)關(guān)系,用戶在進行統(tǒng)一身份認(rèn)證服務(wù)之后,自動使用相應(yīng)的應(yīng)用系統(tǒng)帳號來訪問應(yīng)用系統(tǒng)。
(4) 應(yīng)當(dāng)備靈活和方便的使用模式,使用者可以通過多種方式自由地使用該統(tǒng)一身份認(rèn)證服務(wù)。
同時在進行統(tǒng)一用戶管理和身份認(rèn)證系統(tǒng)的設(shè)計時,必須遵循統(tǒng)一用戶管理、基于分級角色的權(quán)限管理、應(yīng)用級的安全管理、統(tǒng)一證書管理和統(tǒng)一資源管理的設(shè)計思想,以實現(xiàn)數(shù)據(jù)集中、資源集中和應(yīng)用集中的建設(shè)數(shù)字化校園的終極目標(biāo)。
第1頁
,(三) 系統(tǒng)結(jié)構(gòu)
校園統(tǒng)一身份認(rèn)證系采用分層次的結(jié)構(gòu)設(shè)計,主要分為數(shù)據(jù)層、展現(xiàn)層、應(yīng)用層及系統(tǒng)集成層,同時劃分為多個功能模塊,其中核心子系統(tǒng)包:用戶身份數(shù)據(jù)中心、身份及業(yè)務(wù)管理系統(tǒng)、訪問控制系統(tǒng)三個部分組成。
用戶身份數(shù)據(jù)中心包括目錄服務(wù)器(主要存儲用戶認(rèn)證信息及權(quán)限信息)和數(shù)據(jù)庫(存儲用戶身份屬性信息)。
應(yīng)用及身份管理系統(tǒng)用來實現(xiàn)用戶身份信息維護及應(yīng)用管理,包括用戶管理、授權(quán)管理、應(yīng)用管理、安全監(jiān)控管理等內(nèi)容。
訪問控制系統(tǒng)主要實現(xiàn)統(tǒng)一認(rèn)證及單點登錄,與門戶系統(tǒng)形成統(tǒng)一身份認(rèn)證系統(tǒng)的展現(xiàn)層。
同時,系統(tǒng)對于各成員應(yīng)用站點統(tǒng)一的認(rèn)證授權(quán)接口。認(rèn)證系統(tǒng)與用戶的接口同時B/S和C/S的模式。
系統(tǒng)結(jié)構(gòu)如下圖所示:

第2頁
,(四) 統(tǒng)一認(rèn)證解決方案
統(tǒng)一認(rèn)證管理為學(xué)校各應(yīng)用系統(tǒng)等資源提供統(tǒng)一的認(rèn)證服務(wù),認(rèn)證服務(wù)系統(tǒng)提供授權(quán)訪問的機制,獲取認(rèn)證服務(wù)系統(tǒng)許可的第三方應(yīng)用系統(tǒng)都可以集成到此平臺進行統(tǒng)一認(rèn)證。認(rèn)證服務(wù)系統(tǒng)提供WebAPI 、CA 證書、LDAP 標(biāo)準(zhǔn)規(guī)范等認(rèn)證接口形式,可支持JAVA 、.NET 、Delphi 、VB 、VC 、PHP 、ASP 、PB 等等語言開發(fā)的系統(tǒng)。
認(rèn)證信息采用隨機碼為密鑰的對稱加密機制,確保認(rèn)證信息在傳輸過程中的安全。
用戶統(tǒng)一認(rèn)證過程采用SSL 加密通道保證安全性。認(rèn)證服務(wù)器負(fù)責(zé)SSL 加密通道的建立。
(1) 對于口令認(rèn)證方式,認(rèn)證服務(wù)器配置為單向SSL 加密通道,客戶端不需要證書;
(2) 對于證書文件認(rèn)證方式,認(rèn)證服務(wù)器配置為雙向SSL 加密通道,客戶端必須提供用戶證書,并由認(rèn)證服務(wù)器完成對用戶證書和用戶身份的校驗;
客戶端瀏覽器與認(rèn)證服務(wù)器之間采用HTTPS 協(xié)議,認(rèn)證服務(wù)器與平臺應(yīng)用服務(wù)器之間采用HTTP 協(xié)議。在用戶認(rèn)證完成后,可根據(jù)需要設(shè)定客戶端瀏覽器對平臺的訪問是否繼續(xù)走SSL 加密通道,充分兼顧安全與效率。 1、采用LDAP 實現(xiàn)用戶身份管理
統(tǒng)一身份認(rèn)證平臺一個重要的功能就是要建立全校學(xué)生、老師和管理人員權(quán)威的身份中心,此身份可看作是“電子版的身份證”。在校園內(nèi),學(xué)生、老師和管理人員只需記住自己唯一的“電子身份證”即可,無需再記很多的賬號和密碼。
為了確保信息訪問的安全,訪問校園任何資源都需要先到用戶身份中心進行認(rèn)證,看用戶提交的身份信息是否正確。用戶身份存儲在基于LDAP 協(xié)議的Open LDAP目錄服務(wù)中,從而保證認(rèn)證的高效。
身份管理模塊管理用戶身份和成員站點身份。向用戶提供在線注冊功能,用戶注冊時提供必須信息(如用戶名、密碼)該信息即為用戶身份的唯一證據(jù),擁有該信息的用戶即為統(tǒng)一身份認(rèn)證子系統(tǒng)的合法用戶;身份 第3頁
,認(rèn)證模塊還向成員站點提供在線注冊功能,成員站點注冊時需提供一些關(guān)于成員站點的基本信息,還包括為用戶定義的角色種類(如普通用戶、高級用戶、管理員用戶)。
2、采用統(tǒng)一權(quán)限控制
統(tǒng)一身份認(rèn)證平臺不但支持各認(rèn)證應(yīng)用系統(tǒng)通過自己的權(quán)限管理進行授權(quán),也提供統(tǒng)一為認(rèn)證應(yīng)用系統(tǒng)授權(quán)功能。通過建立權(quán)限管理中心,把為認(rèn)證應(yīng)用系統(tǒng)的授權(quán)信息存儲到數(shù)據(jù)庫中進行統(tǒng)一管理。
為了實現(xiàn)權(quán)限令牌的高效認(rèn)證,權(quán)限信息存儲機制采用按用戶組、角色、權(quán)限三個層級,對已經(jīng)授權(quán)的用戶信息和權(quán)限信息進行自動分析,然后按預(yù)定義的高效方式進行存儲。
統(tǒng)一權(quán)限管理將實現(xiàn)集中的用戶策略管理(Policy )。按照全校的組織結(jié)構(gòu),統(tǒng)一策略管理采用“組織” 、“單位(OU )” 、“人員” 、“工作組” 、“角色” 、“應(yīng)用系統(tǒng)”等方式管理用戶信息和應(yīng)用系統(tǒng)信息,從而形成一個層次結(jié)構(gòu)。包括管理部署域名、組織、用戶(基本信息、帳號、口令、用戶證書)、角色、工作組、個性化定制(模版、布局、門戶組件)、系統(tǒng)資源配置、應(yīng)用系統(tǒng)關(guān)聯(lián)等信息。全校教職員工對內(nèi)部的各種應(yīng)用和信息,是否在其門戶桌面上可見,是否允許其訪問,是通過策略管理來實現(xiàn)的。策略管理是上述各個門戶功能(安全、個性化展示、定制等)的基礎(chǔ)。對內(nèi)部的各種應(yīng)用和信息的訪問控制,是通過用戶的安全級別實現(xiàn);用戶的安全級別可以區(qū)分為不同的域、組、成員,每個成員可以擁有不同的安全屬性。策略管理模塊的功能包含:
● 管理用戶的安全信息
● 管理用戶對應(yīng)用資源的訪問策略和權(quán)限信息
● 管理系統(tǒng)的資源配置信息
● 支持大容量,高性能的信息查詢
● 具有用戶策略數(shù)據(jù)的備份和恢復(fù)機制
第4頁
,3、單點登錄實現(xiàn)與改造方案
單點登錄(SSO )是指一個用戶身份只需進行一次鑒權(quán)便可以訪問所有經(jīng)授權(quán)的資源,而不需要多次認(rèn)證。SSO 機制能夠減少人為錯誤,同時提高整個系統(tǒng)的安全性。
(1)對已有應(yīng)用系統(tǒng)采用“偽”自動登錄功能
大部分現(xiàn)有或舊有系統(tǒng)對用戶的管理和認(rèn)證基于專用或非標(biāo)準(zhǔn)的方式,這些應(yīng)用也很難再改變,所以我們在不改動當(dāng)前應(yīng)用系統(tǒng)的前提下,采用一種“偽”Single Sign On的方式,即實際是登錄二次,但由于門戶自動幫用戶實現(xiàn)了第二次登錄,所以對用戶來講,他們感覺到的是一次登錄,即對用戶完全透明。這種方式是對現(xiàn)有和舊有系統(tǒng)最方便地實現(xiàn)單次登錄的方式,而且有著不改變當(dāng)前系統(tǒng)的巨大優(yōu)勢。實現(xiàn)這樣的偽SSO ,可以采用用戶標(biāo)志和密碼的集中存儲來實現(xiàn)。
目錄服務(wù)器為系統(tǒng)提供了一個集中存儲用戶所有應(yīng)用密碼的場所。“統(tǒng)一登錄”的軟件可以利用它,在用戶點擊某一應(yīng)用的URL (包括Web 和非Web 的應(yīng)用)時,根據(jù)用戶登錄時的用戶標(biāo)志(目錄樹中用戶的唯一標(biāo)志uid 屬性),以及應(yīng)用的URL (sso-appurl 屬性)可以從目錄服務(wù)器中迅速搜索出用戶訪問該應(yīng)用所需要的用戶標(biāo)志和口令(sso-userid 和sso-passwd 屬性),然后執(zhí)行后續(xù)的自動登錄步驟。
(2)新建應(yīng)用系統(tǒng)的SSO
對于WEB 應(yīng)用,單點登錄的根本原則是,保持用戶的會話狀態(tài)
(Session ),只要用戶經(jīng)過一次鑒權(quán),各個應(yīng)用應(yīng)該“記住”此用戶已經(jīng)成功鑒權(quán)并在各個應(yīng)用中傳播此消息??梢圆捎脙煞N最常用的方式:
cookie ,URL Rewriting(可以將用戶的會話狀態(tài)擴展到URL 的后面)。cookie 是HTTP 1.1協(xié)議中的一個重要規(guī)定,可以使網(wǎng)站通過簡單的方式與發(fā)出請求的browser 之間進行通信,彌補了HTTP 協(xié)議無狀態(tài)連接的不足,是一種簡便易行的方式。
根據(jù)上述原則,門戶系統(tǒng)和其它應(yīng)用系統(tǒng)的單點登錄方案可以采用:某一個專用的認(rèn)證代理進程,獲取并保存用戶的身份信息,在用戶與各個應(yīng)用系統(tǒng)的交互過程中,代替用戶完成相應(yīng)應(yīng)用的認(rèn)證過程。
第5頁
,用戶通過平臺認(rèn)證后,第一次訪問業(yè)務(wù)系統(tǒng)時,平臺根據(jù)業(yè)務(wù)系統(tǒng)的配置自動生成業(yè)務(wù)關(guān)聯(lián)頁面,要求用戶進行關(guān)聯(lián):
(1) 用戶輸入業(yè)務(wù)系統(tǒng)的用戶信息(可能包括業(yè)務(wù)系統(tǒng)用戶名和密碼);
(2) 關(guān)聯(lián)信息連同時間戳被平臺的訪問控制服務(wù)器進行加密和簽名(業(yè)務(wù)系統(tǒng)證書加密,平臺私鑰簽名,時間戳用于防止重放攻擊);
(3) 加密簽名的關(guān)聯(lián)信息通過SSL 加密通道,傳遞至業(yè)務(wù)系統(tǒng)訪問前置,并由其進行解密驗證后交給業(yè)務(wù)系統(tǒng)驗證;
(4) 關(guān)聯(lián)信息驗證通過,則平臺將用戶統(tǒng)一帳戶與業(yè)務(wù)系統(tǒng)用戶信息建立對應(yīng)關(guān)系,以備正常訪問業(yè)務(wù)系統(tǒng)時使用。
(五) 核心技術(shù)LDAP 介紹
LDAP 是輕量目錄訪問協(xié)議,英文全稱是Lightweight Directory Access Protocol ,一般都簡稱為LDAP 。它是基于X.500標(biāo)準(zhǔn)的,但是簡單多了并且可以根據(jù)需要定制。與X.500不同,LDAP 支持TCP/IP,簡單說來,LDAP 是一個得到關(guān)于人或者資源的集中、靜態(tài)數(shù)據(jù)的快速方式。 LDAP 其實是一電話簿,類似于我們所使用諸如NIS(Network Information Service) 、DNS (Domain Name Service) 等網(wǎng)絡(luò)目錄,也類似于你在花園中所看到的樹木。 不少LDAP 開發(fā)人員喜歡把LDAP 與關(guān)系數(shù)據(jù)庫相比,認(rèn)為是另一種的存貯方式,然后在讀性能上進行比較。實際上,這種對比的基礎(chǔ)是錯誤的。LDAP 和關(guān)系數(shù)據(jù)庫是兩種不同層次的概念,后者是存貯方式(同一層次如網(wǎng)格數(shù)據(jù)庫,對象數(shù)據(jù)庫),前者是存貯模式和訪問協(xié)議。LDAP 是一個比關(guān)系數(shù)據(jù)庫抽象層次更高的存貯概念,與關(guān)系數(shù)據(jù)庫的查詢語言SQL 屬同一級別。LDAP 最基本的形式是一個連接數(shù)據(jù)庫的標(biāo)準(zhǔn)方式。該數(shù)據(jù)庫為讀查詢作了優(yōu)化。因此它可以很快地得到查詢結(jié)果,不過在其它方面,例如更新,就慢得多。
從另一個意義上 LDAP 是實現(xiàn)了指定的數(shù)據(jù)結(jié)構(gòu)的存貯,它是一種特殊的數(shù)據(jù)庫。但是LDAP 和一般的數(shù)據(jù)庫不同,明白這一點是很重要的。 LDAP 對查詢進行了優(yōu)化,與寫性能相比LDAP 的讀性能要優(yōu)秀很多。
就象Sybase 、Oracle 、Informix 或Microsoft 的數(shù)據(jù)庫管理系統(tǒng)(DBMS ) 第6頁
,是用于處理查詢和更新關(guān)系型數(shù)據(jù)庫那樣,LDAP 服務(wù)器也是用來處理查詢和更新LDAP 目錄的。換句話來說LDAP 目錄也是一種類型的數(shù)據(jù)庫,但不是關(guān)系型數(shù)據(jù)庫。要特別注意的是,LDAP 通常作為一個 hierarchical 數(shù)據(jù)庫使用,而不是一個關(guān)系數(shù)據(jù)庫。因此,它的結(jié)構(gòu)用樹來表示比用表格好。正因為這樣,就不能用SQL 語句了。
現(xiàn)在LDAP 技術(shù)發(fā)展得很快令人激動人心。在企業(yè)范圍內(nèi)實現(xiàn)LDAP 可以讓運行在幾乎所有計算機平臺上的所有的應(yīng)用程序從LDAP 目錄中獲取信息。LDAP 目錄中可以存儲各種類型的數(shù)據(jù):電子郵件地址、郵件路由信息、人力資源數(shù)據(jù)、公用密匙、聯(lián)系人列表,等等。通過把LDAP 目錄作為系統(tǒng)集成中的一個重要環(huán)節(jié),可以簡化員工在企業(yè)內(nèi)部查詢信息的步驟,甚至連主要的數(shù)據(jù)源都可以放在任何地方。
在LDAP 中信息以樹狀方式組織,在樹狀信息中的基本數(shù)據(jù)單元是條目,而每個條目由屬性構(gòu)成,屬性中存儲有屬性值;LDAP 中的信息模式,類似于面向?qū)ο蟮母拍?,在LDAP 中每個條目必須屬于某個或多個對象類(Object Class),每個Object Class由多個屬性類型組成,每個屬性類型有所對應(yīng)的語法和匹配規(guī)則;對象類和屬性類型的定義均可以使用繼承的概念。每個條目創(chuàng)建時,必須定義所屬的對象類,必須提供對象類中的必選屬性類型的屬性值,在LDAP 中一個屬性類型可以對應(yīng)多個值。
在LDAP 中把對象類、屬性類型、語法和匹配規(guī)則統(tǒng)稱為Schema ,在LDAP 中有許多系統(tǒng)對象類、屬性類型、語法和匹配規(guī)則,這些系統(tǒng)Schema 在LDAP 標(biāo)準(zhǔn)中進行了規(guī)定,同時不同的應(yīng)用領(lǐng)域也定義了自己的Schema ,同時用戶在應(yīng)用時,也可以根據(jù)需要自定義Schema 。這有些類似于XML ,除了XML 標(biāo)準(zhǔn)中的XML 定義外,每個行業(yè)都有自己標(biāo)準(zhǔn)的DTD 或DOM 定義,用戶也可以自擴展;也如同XML ,在LDAP 中也鼓勵用戶盡量使用標(biāo)準(zhǔn)的Schema ,以增強信息的互聯(lián)互通。在Schema 中最難理解的是匹配規(guī)則,這是LDAP 中為了加快查詢的速度,針對不同的數(shù)據(jù)類型,可以提供不同的匹配方法,如針對字符串類型的相等、模糊、大于小于均提供自己的匹配規(guī)則。
在LDAP 中每個條目均有自己的DN 和RDN 。DN 是該條目在整個樹 第7頁
,中的唯一名稱標(biāo)識,RDN 是條目在父節(jié)點下的唯一名稱標(biāo)識,如同文件系統(tǒng)中,帶路徑的文件名就是DN ,文件名就是RDN 。
LDAP 協(xié)議是跨平臺的和標(biāo)準(zhǔn)的協(xié)議,因此應(yīng)用程序就不用為LDAP 目錄放在什么樣的服務(wù)器上操心了。實際上,LDAP 得到了業(yè)界的廣泛認(rèn)可,因為它是Internet 的標(biāo)準(zhǔn)。廠商都很愿意在產(chǎn)品中加入對LDAP 的支持,因為他們根本不用考慮另一端(客戶端或服務(wù)端)是怎么樣的。LDAP 服務(wù)器可以是任何一個開放源代碼或商用的LDAP 目錄服務(wù)器(或者還可能是具有LDAP 界面的關(guān)系型數(shù)據(jù)庫),因為可以用同樣的協(xié)議、客戶端連接軟件包和查詢命令與LDAP 服務(wù)器進行交互。與LDAP 不同的是,如果軟件廠商想在軟件產(chǎn)品中集成對DBMS 的支持,那么通常都要對每一個數(shù)據(jù)庫服務(wù)器單獨定制。大多數(shù)的LDAP 服務(wù)器安裝起來很簡單,也容易維護和優(yōu)化。
第8頁