身份驗(yàn)證 在“微軟身份和訪問(wèn)管理平臺(tái)”中,建議使用 Microsoft? Active Directory? 目錄服務(wù)技術(shù)來(lái)存儲(chǔ)身份信息的技術(shù),其中包括在身份驗(yàn)證流程中驗(yàn)證用戶憑證的加密密鑰。 與 Microsoft Windows Server? 2003、Microsoft Windows? XP Professional 及 Windows 安全服務(wù)相集成的應(yīng)用程序通常使用操作系統(tǒng)的內(nèi)置功能來(lái)執(zhí)行身份驗(yàn)證。 Windows 身份驗(yàn)證服務(wù) 按應(yīng)用程序?qū)嵤┥矸蒡?yàn)證協(xié)議不僅效率非常低下,而且還可能會(huì)給組織帶來(lái)安全漏洞。較為合理的方法是使用 Windows 平臺(tái)中的身份驗(yàn)證機(jī)制來(lái)構(gòu)建應(yīng)用程序。 為達(dá)到最佳效果,在開始應(yīng)用程序設(shè)計(jì)流程前,開發(fā)人員需要了解使用不同協(xié)議及協(xié)議支持接口的不同身份驗(yàn)證類型和分支。 Windows 身份驗(yàn)證服務(wù)體系結(jié)構(gòu) Windows Server 2003 和 Microsoft Windows XP 實(shí)現(xiàn)了一套完整的身份驗(yàn)證方法和安全協(xié)議,可以滿足許多應(yīng)用程序的身份驗(yàn)證需求。Microsoft .NET Passport、通過(guò)證書或智能卡進(jìn)行的公鑰身份驗(yàn)證及用戶名/密碼組合因各自不同的憑證要求提供不同的用戶體驗(yàn),而且各種方法都各有其不同的安全特征。數(shù)據(jù)傳輸機(jī)制還可以定義您可以使用的身份驗(yàn)證協(xié)議。 “微軟身份和訪問(wèn)管理”平臺(tái)中身份驗(yàn)證服務(wù)的安全系統(tǒng)可分為劃分幾種級(jí)別:其范圍從提供較高靈活性和控制能力的較低級(jí)別接口直到靈活性較低但應(yīng)用程序編程接口 (API) 更為簡(jiǎn)單的高級(jí)別接口。下圖顯示了如何劃分身份驗(yàn)證協(xié)議和應(yīng)用程序 API 的層次結(jié)構(gòu)。 圖 6.1.Windows 操作系統(tǒng)中的身份驗(yàn)證 API 和協(xié)議層次結(jié)構(gòu) 查看大圖 在上圖中身份驗(yàn)證堆棧的頂部,高級(jí)別 API 和服務(wù)提供了進(jìn)程間通信 (IPC) 機(jī)制,為傳輸應(yīng)用程序數(shù)據(jù)提供通過(guò)驗(yàn)證的安全通道。這種服務(wù)和 API 的示例包括分布式組件對(duì)象模型 (DCOM)、遠(yuǎn)程過(guò)程調(diào)用 (RPC)、Microsoft ASP.NET、ASP、WinInet 等等。 微軟的 RPC 是一種功能強(qiáng)大、高效而又安全的 IPC 機(jī)制,它支持?jǐn)?shù)據(jù)交換和調(diào)用駐留于不同進(jìn)程中的功能。這種進(jìn)程可以位于同一臺(tái)計(jì)算機(jī)上,也可以位于局域網(wǎng)上或 Internet 中。 WinInet 是專為支持 Internet 安全協(xié)議(例如 Internet 協(xié)議上的安全套接字層 (SSL))而設(shè)計(jì)的一種應(yīng)用程序協(xié)議接口。WinInet 安全支持的實(shí)現(xiàn)將安全支持提供程序接口 (SSPI) 應(yīng)用于安全通道(SSL 的 Windows NT? 實(shí)現(xiàn))安全提供程序。 有些情況下,這些服務(wù)所公開的 API 可以幫助應(yīng)用程序開發(fā)人員全面控制身份驗(yàn)證的執(zhí)行和數(shù)據(jù)的保護(hù)。例如,DCOM API 允許開發(fā)人員選擇特定的身份驗(yàn)證協(xié)議,如 Kerberos 協(xié)議或 NT LAN Manager (NTLM) 挑戰(zhàn)/響應(yīng)。它還指定應(yīng)將數(shù)據(jù)簽名(防止攻擊者更改數(shù)據(jù))還是加密(防止竊取者查看數(shù)據(jù))。而其他服務(wù)和 API 只受系統(tǒng)配置的影響。最能說(shuō)明這一點(diǎn)的是 ASP.NET,它寄宿在運(yùn)行 Microsoft Internet Information Services (IIS) 6.0 的服務(wù)器上,而后者可配置為針對(duì)特定情況使用相應(yīng)的身份驗(yàn)證機(jī)制。 安全支持提供程序接口 SSPI 是最低級(jí)別的身份驗(yàn)證應(yīng)用程序接口,是通用安全服務(wù) API (GSS-API) 的微軟版本。有關(guān) GSS-API 的更多信息,請(qǐng)參見“Internet 工程工作組”(ITEF) 請(qǐng)求注解 網(wǎng)站上的 RFC 1508 和 1509。 有關(guān) SSPI 的更多信息,請(qǐng)參見 MSDN 網(wǎng)站上的再談安全支持提供程序接口 一文。 SSPI 和 GSS-API 所暗含的理念是雙方的網(wǎng)絡(luò)身份驗(yàn)證通常遵循一種公共模式。各方需要按一定的順序交換一條或多條信息。由于他們可以從眾多不同網(wǎng)絡(luò)協(xié)議(超文本傳輸協(xié)議 (HTTP)、RPC、服務(wù)器消息塊 (SMB)、Internet Inter-ORB 協(xié)議 (IIOP)、DCOM、Java 遠(yuǎn)程方法調(diào)用 (RMI) 等)中選擇一種進(jìn)行通信,因此最好不要將單一的身份驗(yàn)證握手硬編碼到網(wǎng)絡(luò)協(xié)議之中。更好的辦法是只提供產(chǎn)生“身份驗(yàn)證令牌”的泛型接口,這些驗(yàn)證令牌其實(shí)只是代表身份驗(yàn)證序列某個(gè)方面的二進(jìn)制數(shù)據(jù)結(jié)構(gòu)。這些令牌通過(guò)所用的應(yīng)用程序協(xié)議進(jìn)行交換。 例如,在 RPC 中,已使用握手進(jìn)程來(lái)同步客戶端和服務(wù)器之間的協(xié)議。RPC 只在此握手進(jìn)程中為任意大小的不透明身份驗(yàn)證令牌提供空間。SSPI 和 GSS-API 所執(zhí)行的大部分工作是生成和評(píng)估這些令牌。 如前所述,Windows Server 和客戶端操作系統(tǒng)實(shí)現(xiàn)了多種身份驗(yàn)證協(xié)議。這些協(xié)議即是“安全數(shù)據(jù)包”,其中包括由本地安全授權(quán)服務(wù)加載的 DLL 文件。SSPI 是 Windows Server 和客戶端操作系統(tǒng)中所有安全數(shù)據(jù)包的接口。這些安全數(shù)據(jù)包通常用于實(shí)現(xiàn)一項(xiàng)網(wǎng)絡(luò)身份驗(yàn)證協(xié)議,如 Kerberos 版本5 身份驗(yàn)證協(xié)議、NTLM 挑戰(zhàn)/響應(yīng)、摘要身份驗(yàn)證、安全套接字層 (SSL) 或傳輸層安全 (TLS)。應(yīng)用程序可以使用這些協(xié)議安全、無(wú)縫地集成 Active Directory ,進(jìn)行身份驗(yàn)證,還可以使用協(xié)議的各種功能來(lái)保證應(yīng)用程序數(shù)據(jù)的安全。 安全協(xié)議協(xié)商 (SPNEGO) 是根據(jù)需要在身份驗(yàn)證協(xié)議之間進(jìn)行協(xié)商的特殊安全數(shù)據(jù)包。對(duì)于使用 SSPI 和 Kerberos 版本5 協(xié)議或 NTLM 的應(yīng)用程序而言,最好使用 SPNEGO 數(shù)據(jù)包,而不要直接使用這些協(xié)議。有關(guān) SPNEGO 的更多信息,請(qǐng)參見 MSDN 上的 Windows 安全性 頁(yè)面。 Kerberos 身份驗(yàn)證 Kerberos 版本5 身份驗(yàn)證協(xié)議的說(shuō)明請(qǐng)參見“請(qǐng)求注解”網(wǎng)站上的 IETF RFC 1510 頁(yè)面。此協(xié)議具有極高的安全性和可伸縮性,因此非常適合集成網(wǎng)絡(luò)環(huán)境中的身份驗(yàn)證。 在運(yùn)行 Microsoft Windows 2000 Server 或其更高版本的 Windows 服務(wù)器和客戶端中,Kerberos 版本5 身份驗(yàn)證協(xié)議是 Active Directory 身份驗(yàn)證的基礎(chǔ)。它還集成在 SMB、HTTP 和 RPC 及使用這些協(xié)議的客戶端和服務(wù)器應(yīng)用程序中。Windows 平臺(tái)為用戶提供了對(duì)此強(qiáng)大安全工具的無(wú)縫集成體驗(yàn)。 Kerberos 版本5 協(xié)議對(duì)于“微軟身份和訪問(wèn)管理”平臺(tái)非常重要,因?yàn)樗谝粋€(gè)開放的標(biāo)準(zhǔn)。許多其他供應(yīng)商業(yè)已根據(jù) Kerberos 版本5 協(xié)議的麻省理工學(xué)院 (MIT) 實(shí)現(xiàn)實(shí)施了該項(xiàng)協(xié)議,從而為在微軟和非微軟平臺(tái)及應(yīng)用程序之間實(shí)現(xiàn)身份驗(yàn)證互操作性奠定了基礎(chǔ)。 Windows 支持兩種配置 Kerberos 版本5 協(xié)議實(shí)現(xiàn)互操作性的方法: ? | 在 Windows 域和基于 MIT 的 Kerberos 版本5 協(xié)議領(lǐng)域之間建立信任關(guān)系。這種關(guān)系使得此領(lǐng)域中的客戶端可以通過(guò)信任機(jī)制驗(yàn)證連接到 Windows 域中的網(wǎng)絡(luò)資源。 | ? | 非 Windows 客戶端和服務(wù)器可以使用 Active Directory 帳戶從域控制器獲得身份驗(yàn)證。 | 在 Intranet 中,在 Windows 平臺(tái)上的 Kerberos 版本5 協(xié)議實(shí)現(xiàn)可以為用戶提供 SSO 功能,這是由于身份驗(yàn)證協(xié)議的基本特征和協(xié)議在 Windows 客戶端及服務(wù)器操作系統(tǒng)中實(shí)現(xiàn)方式的具體特性而決定的。 阻礙 Kerberos 版本5 協(xié)議成為應(yīng)用程序身份驗(yàn)證和安全的通用解決方案的一個(gè)最主要限制是,無(wú)法將 Kerberos 身份驗(yàn)證配置在 Internet 上使用。其中的原因?qū)⒃诒菊律院蟮摹癢eb 單一登錄”部分詳細(xì)探討。 有關(guān) Kerberos 版本5 身份驗(yàn)證協(xié)議的更多信息,請(qǐng)參見 Microsoft TechNet 上的循序漸進(jìn)指南:Kerberos 5 (krb5 1.0) 互操作性 頁(yè)面。 安全套接字層 3.0 和傳輸層安全 1.0 SSL 3.0 和 TLS 1.0 是兩個(gè)密切相關(guān)的協(xié)議,可用于解決兩應(yīng)用程序間通信通道的一般安全問(wèn)題。SSL 3.0 是一個(gè)專有的 Netscape 通信協(xié)議,而 TLS 1.0 是“請(qǐng)求注解”網(wǎng)站上的 IETF 標(biāo)準(zhǔn) RFC 2246 定義。兩個(gè)協(xié)議頗為相似,但 TLS 包含一些重要的改進(jìn),因此微軟建議盡可能使用此協(xié)議。TLS 和 SSL 均支持在建立安全數(shù)據(jù)通道期間進(jìn)行服務(wù)器身份驗(yàn)證,也允許選擇進(jìn)行客戶端身份驗(yàn)證。 SSL 和 TLS 協(xié)議常用于在 HTTP 協(xié)議上提供數(shù)據(jù)保護(hù)和完整性(加密)。其他協(xié)議也支持 SSL 或 TLS。例如,輕型目錄訪問(wèn)協(xié)議 (LDAP) 與 SSL 合并后產(chǎn)生了 LDAP over SSL,即 LDAPS。此外,自定義或第三方應(yīng)用程序也可以通過(guò) SSPI 直接使用 SSL 或 TLS,和指定 SChannel 安全數(shù)據(jù)包。 SSL 和 TLS 采用對(duì)稱加密密鑰提供了基于證書和安全數(shù)據(jù)傳輸?shù)纳矸蒡?yàn)證。在 Internet 上,組織通常使用 SSL 和 TLS 進(jìn)行服務(wù)器身份驗(yàn)證。客戶端通過(guò)核對(duì)下列條件來(lái)用 SSL 和 TLS 驗(yàn)證服務(wù)器: ? | 服務(wù)器證書有效。 | ? | 經(jīng)證實(shí),服務(wù)器擁有與服務(wù)器 X.509 證書相關(guān)的相應(yīng)私鑰。 | ? | 所驗(yàn)證的服務(wù)器即為證書中所指定的服務(wù)器。 | SSL 和 TLS 還支持客戶端身份驗(yàn)證,并通過(guò) X.509 客戶端證書將客戶端身份驗(yàn)證與 Windows Server 2003 平臺(tái)相集成。同時(shí)進(jìn)行客戶端和服務(wù)器身份驗(yàn)證通常稱為相互身份驗(yàn)證。為了完成客戶端身份驗(yàn)證,客戶端須提供有效的客戶端證書,服務(wù)器根據(jù)針對(duì)服務(wù)器身份驗(yàn)證描述的條件進(jìn)行衡量。Windows Server 確認(rèn)客戶端證書有效后,將其映射到 Active Directory 帳戶。對(duì)于證書的映射方式, Active Directory 提供了很大的靈活性,既允許一對(duì)一映射,也允許多對(duì)一映射。 在使用 X.509 數(shù)字證書進(jìn)行身份驗(yàn)證時(shí),SSL 和 TLS 比其他身份驗(yàn)證協(xié)議具有更高的安全性。 注意 SSL 和 TLS 在 Windows XP 客戶端上通過(guò) Windows 憑證管理器為用戶提供 Web SSO 功能,這一點(diǎn)將在本章稍后部分介紹。 Passport 身份驗(yàn)證 Microsoft Passport 是一種 Web 服務(wù),它根據(jù)龐大的數(shù)字身份數(shù)據(jù)庫(kù)對(duì)用戶進(jìn)行驗(yàn)證。個(gè)人可通過(guò)某個(gè)安全網(wǎng)站來(lái)維護(hù)其 Passport 身份。Passport 在許多網(wǎng)站啟用了身份驗(yàn)證和 Web SSO 功能,而且在許多微軟網(wǎng)站和一些不屬于微軟的站點(diǎn)都在使用 Passport。 開發(fā)人員可以創(chuàng)建鏈接到 Passport 的應(yīng)用程序,從而使應(yīng)用程序僅接受來(lái)自已注冊(cè) Passport 用戶的連接。如果 Passport 確定用戶的憑證有效,即會(huì)返回一個(gè)身份驗(yàn)證票證,應(yīng)用程序可以通過(guò)解密此票證來(lái)確定用戶的身份。為保護(hù)隱私,典型的 Passport 身份驗(yàn)證只將一個(gè) Passport 唯一 ID (PUID) 傳送給相關(guān)的應(yīng)用程序。 通常,應(yīng)用程序隨后會(huì)將此 PUID 映射至本地維護(hù)的用戶帳戶,以派生在組織中有效的數(shù)字身份。在選中 IIS 6.0 中 Passport 身份驗(yàn)證配置選項(xiàng)時(shí),Windows Server 2003 將與 Passport 完全集成。此外,還可以將 Passport 用戶映射到 Active Directory 帳戶,使 Passport 身份驗(yàn)證與 Windows 安全模型完全集成。 對(duì)于面向 Internet 的應(yīng)用程序,Passport 身份驗(yàn)證為用戶提供了 SSO 體驗(yàn)。Passport 通過(guò)提供在 HTTP cookie 中編碼的身份驗(yàn)證票證來(lái)實(shí)現(xiàn)此項(xiàng)功能。引入 Cookie(在瀏覽器會(huì)話的生命周期內(nèi)維護(hù))后,用戶無(wú)需重復(fù)登錄到 Passport 身份驗(yàn)證服務(wù)即可完成對(duì)多個(gè)應(yīng)用程序的身份驗(yàn)證。 有關(guān) Passport 的更多信息,請(qǐng)參見 MSDN 上的.NET Passport 服務(wù)指南套件 。 摘要身份驗(yàn)證 摘要身份驗(yàn)證是“請(qǐng)求注解”網(wǎng)站上 RFC 2617 中介紹的另一種基于標(biāo)準(zhǔn)的身份驗(yàn)證協(xié)議,它作為一個(gè)驗(yàn)證數(shù)據(jù)包而包含在 Windows Server 2003 之中。摘要身份驗(yàn)證主要用于在 Windows 和非 Windows 平臺(tái)之間實(shí)現(xiàn) Internet 身份驗(yàn)證的互操作性。 Windows Server 2003 還將摘要身份驗(yàn)證作為一個(gè)簡(jiǎn)單的身份驗(yàn)證和安全層 (SASL) 機(jī)制來(lái)實(shí)現(xiàn)(如“請(qǐng)求注解”網(wǎng)站的 RFC 2831 中所述)。SASL 是應(yīng)用程序和底層協(xié)議之間的另一個(gè)抽象層,通過(guò)該抽象層可以在不更改應(yīng)用程序的情況下輕松引入不同的身份驗(yàn)證機(jī)制。在某些方面,它與先前所述的 SPNEGO 機(jī)制類似。SASL 主要用于 LDAP 身份驗(yàn)證。 摘要身份驗(yàn)證與 NTLM 專有協(xié)議具有相似的安全特征。摘要身份驗(yàn)證與 NTLM 均為挑戰(zhàn)/響應(yīng)協(xié)議,都需要驗(yàn)證服務(wù)器生成包含一些不可預(yù)知數(shù)據(jù)的挑戰(zhàn)。隨后,客戶端使用從用戶密碼派生的密鑰加密挑戰(zhàn),從而形成響應(yīng)。服務(wù)器或者受信任的第三方服務(wù)(如 Active Directory )通過(guò)將客戶端的響應(yīng)與根據(jù)身份存儲(chǔ)中用戶的相關(guān)憑證計(jì)算出的值進(jìn)行比較,檢驗(yàn)用戶是否擁有正確的密碼。如果響應(yīng)與計(jì)算值相匹配,則認(rèn)為用戶知道安全密碼,并通過(guò)身份驗(yàn)證。 一般而言,摘要身份驗(yàn)證不如 Kerberos 版本5 協(xié)議安全,因?yàn)樗揽繌?qiáng)密碼來(lái)防止針對(duì)挑戰(zhàn)/響應(yīng)機(jī)制的攻擊。但是,由于在身份驗(yàn)證期間不會(huì)向服務(wù)器提供明文密碼,因此摘要身份驗(yàn)證要比基于表單的身份驗(yàn)證或基本身份驗(yàn)證更為可靠。SSL 和 TLS 通常用于保護(hù)摘要身份驗(yàn)證免遭攻擊。 大多數(shù)情況下,摘要身份驗(yàn)證的可伸縮性不如 Kerberos 版本5 協(xié)議,但它可以在無(wú)法應(yīng)用 Kerberos 協(xié)議的場(chǎng)合使用。例如對(duì)面向外部的網(wǎng)站的驗(yàn)證。 摘要身份驗(yàn)證提供 SSO 只是為了保護(hù)通過(guò)單一 Web URL 得到的信息。如果用戶導(dǎo)航至不同站點(diǎn),或者導(dǎo)航至同一站點(diǎn)中的不同服務(wù)器,通常必須要再次輸入他們的憑證。 基于表單的身份驗(yàn)證 基于表單的身份驗(yàn)證依靠網(wǎng)頁(yè)中的登錄表單來(lái)收集用戶憑證,形式基本只有明文用戶名與密碼一種。因此,此類身份驗(yàn)證與我們前面介紹的 Kerberos 版本5 協(xié)議或摘要身份驗(yàn)證不同,并不是客戶端和服務(wù)器之間的身份驗(yàn)證協(xié)議。 基于表單的身份驗(yàn)證需要格外小心,才能有力地保護(hù)支持它的應(yīng)用程序,因此微軟建議在沒(méi)有 SSL 的情況下不要使用這種身份驗(yàn)證方式。在使用基于表單身份驗(yàn)證的應(yīng)用程序中存在著一個(gè)很大的漏洞,攻擊者可以利用它來(lái)竊取明文密碼數(shù)據(jù),這將嚴(yán)重危及組織中應(yīng)用程序數(shù)據(jù)和網(wǎng)絡(luò)自身的安全。 因?yàn)閳?zhí)行基于表單身份驗(yàn)證的應(yīng)用程序以明文形式接收用戶憑證,所以應(yīng)用程序可以選擇根據(jù)其他用戶存儲(chǔ)而不是 Active Directory 進(jìn)行身份驗(yàn)證。微軟建議在大多數(shù)情形下都不要使用這種方法,因?yàn)楦郊拥纳矸荽鎯?chǔ)會(huì)使身份和訪問(wèn)管理解決方案復(fù)雜化。 實(shí)現(xiàn)基于表單身份驗(yàn)證的應(yīng)用程序開發(fā)人員在以 Active Directory 方式驗(yàn)證用戶時(shí),最好使用 LDAP 綁定或 LogonUser() 這樣的 Windows API 來(lái)確認(rèn)用戶憑證,也可以生成一個(gè)安全上下文,在本章后面的“身份驗(yàn)證”部分對(duì)此進(jìn)行了說(shuō)明。 實(shí)施基于表單的身份驗(yàn)證的應(yīng)用程序通常會(huì)使用 HTTP cookie 或 URL 修改來(lái)為用戶提供 SSO。ASP.NET 提供了通過(guò)加密技術(shù)來(lái)防止未授權(quán)讀取并通過(guò)數(shù)字簽名來(lái)防止隨意篡改的 cookie 保護(hù)功能。 本系列文章中的“開發(fā)可識(shí)別身份的 ASP.NET 應(yīng)用程序”一文中,詳細(xì)介紹了開發(fā)人員應(yīng)如何在 Windows 平臺(tái)上使用基于表單的身份驗(yàn)證。 基本身份驗(yàn)證 與基于表單的身份驗(yàn)證一樣,基本身份驗(yàn)證并非真正的網(wǎng)絡(luò)身份驗(yàn)證協(xié)議,因?yàn)樵谶M(jìn)行網(wǎng)絡(luò)資源驗(yàn)證時(shí)它并不以加密的方式來(lái)保護(hù)用戶的憑證。與基于表單的身份驗(yàn)證一樣,執(zhí)行此類身份驗(yàn)證的服務(wù)器以明文形式接收用戶憑證,然后使用 Windows API 驗(yàn)證用戶。與基于表單的身份驗(yàn)證的另一點(diǎn)相同之處是,部署此類身份驗(yàn)證技術(shù)的開發(fā)人員和系統(tǒng)管理員必須付出巨大的努力來(lái)保護(hù)應(yīng)用程序或服務(wù)器免遭危害。因此,微軟強(qiáng)烈建議在沒(méi)有 SSL 的情況下不要使用基本身份驗(yàn)證?;旧矸蒡?yàn)證與摘要身份驗(yàn)證具有相同的 SSO 特征。 單一登錄 任何關(guān)于身份驗(yàn)證的探討都少不了一個(gè)重要概念,即單一登錄 (SSO)。在身份驗(yàn)證進(jìn)程中實(shí)施 SSO 的方式有多種: ? | 桌面集成的 SSO。 | ? | Web SSO。 | ? | 憑證映射,或企業(yè) SSO。 | SSO 完全省去了額外輸入用戶憑證的過(guò)程,也意味著不必再去判斷其中所涉及的身份驗(yàn)證安全級(jí)別。出于安全性考慮,有一些 SSO 類型可能比其他的更好一些。 此外,Extranet SSO 和 Intranet SSO 這兩個(gè)術(shù)語(yǔ)是指在 Extranet 或 Intranet 情景中實(shí)現(xiàn) SSO 時(shí)所采用的技術(shù)。Extranet SSO 通?;?Web,而 Intranet SSO 則會(huì)涉及許多類型的應(yīng)用程序和服務(wù),其中包括 Web 應(yīng)用程序、胖客戶端應(yīng)用程序和終端會(huì)話。 桌面集成的單一登錄 安全登錄要求用戶向網(wǎng)絡(luò)提供其身份的證明,但是以反復(fù)鍵入密碼的方式訪問(wèn)多個(gè)資源會(huì)令用戶感到厭煩。Microsoft Windows 平臺(tái)利用單一登錄功能,跨網(wǎng)絡(luò)中使用單一用戶身份(在 Active Directory 中維護(hù))。由于用來(lái)登錄到工作站的憑證往往就是用來(lái)訪問(wèn)網(wǎng)絡(luò)資源的憑證,因此用戶的登錄憑證(用戶名和密碼組合)將會(huì)被緩存到客戶端操作系統(tǒng)本地的“本地安全授權(quán)”(LSA) 中。用戶登錄到域中后,在驗(yàn)證到網(wǎng)絡(luò)資源時(shí),Windows 身份驗(yàn)證將使用這些緩存的憑證來(lái)提供 SSO。 為確保良好的安全性,需要用戶提供一個(gè)經(jīng)過(guò)驗(yàn)證的身份來(lái)訪問(wèn)網(wǎng)絡(luò)資源。通過(guò) SSO,用戶只需經(jīng)過(guò)一次系統(tǒng)身份驗(yàn)證即可訪問(wèn)他們有權(quán)使用的所有應(yīng)用程序和數(shù)據(jù)源,而不必再輸入另一個(gè)帳戶 ID 或密碼。 Kerberos 版本5 身份驗(yàn)證協(xié)議、NTLM 和智能卡身份驗(yàn)證技術(shù)均與微軟客戶端及服務(wù)器操作系統(tǒng)中的桌面登錄進(jìn)程相集成,以為組織 Intranet 中 Windows 域或 Windows 林內(nèi)的用戶提供 SSO 體驗(yàn)。 Active Directory 提供了受信任的第三方,使服務(wù)器無(wú)需本地存儲(chǔ)每個(gè)用戶的相關(guān)信息即可驗(yàn)證用戶。 Windows Server 2003 中的高級(jí)信任機(jī)制(例如跨林信任)允許某個(gè)林中的身份在訪問(wèn)其他林中的資源時(shí)享用 SSO。 Web 單一登錄 由于越來(lái)越多的公司都在部署員工、合作伙伴和客戶使用的 Extranet 和 Intranet Web 應(yīng)用程序,因此為用戶提供 SSO 體驗(yàn)的能力就變得非常重要。 Web 應(yīng)用程序與傳統(tǒng)的“胖”客戶端/服務(wù)器應(yīng)用程序不同,因?yàn)樗鼈兺ǔR揽?Web 服務(wù)器實(shí)現(xiàn)身份驗(yàn)證。這種依賴性使用戶可以通過(guò)常用方法將身份驗(yàn)證機(jī)制添加到單一應(yīng)用程序(Web 服務(wù)器)中,同時(shí)還解決了大量服務(wù)器托管應(yīng)用程序的身份驗(yàn)證問(wèn)題。在 Intranet 環(huán)境中,微軟服務(wù)器和客戶端產(chǎn)品通過(guò)在 Internet Explorer 和 IIS 6.0 中實(shí)施 Kerberos 版本5 身份驗(yàn)證協(xié)議來(lái)提供 Web 單一登錄或 Web SSO,本系列文章的“Intranet 訪問(wèn)管理”一文將對(duì)此進(jìn)行了描述。 不幸的是,Intranet 環(huán)境中行之有效的 Kerberos 實(shí)現(xiàn)對(duì)組織 Extranet 中面向 Internet 的應(yīng)用程序卻束手無(wú)策。Intranet 和 Extranet Web SSO 之間的差異是以下三個(gè)因素共同作用的結(jié)果: ? | 部署面向 Internet 的“密鑰分發(fā)中心”(KDC)(例如 Active Directory 域控制器)過(guò)程中固有的困難。 | ? | 許多瀏覽器不支持在 HTTP 上進(jìn)行 Kerberos 身份驗(yàn)證。 | ? | KDC 協(xié)議中原有的漏洞 | 雖然對(duì)部署面向 Internet 的 KDC 過(guò)程中固有困難的詳細(xì)討論不在本文的論述范圍之內(nèi),但該問(wèn)題卻是實(shí)施部署的一大障礙。 第二個(gè)問(wèn)題對(duì) Extranet 部署的影響通常更為明顯。與內(nèi)部部署不同,軟件標(biāo)準(zhǔn)在內(nèi)部是強(qiáng)制執(zhí)行的,然而很少有組織能夠規(guī)定外部客戶和商業(yè)合作伙伴使用哪種類型和版本的瀏覽器軟件來(lái)訪問(wèn)外部應(yīng)用程序。Microsoft Internet Explorer 6.0 及更高版本是市面上唯一可以買到的支持在 HTTP 上進(jìn)行 Kerberos 身份驗(yàn)證的瀏覽器。 解決多個(gè) Web 應(yīng)用程序 SSO 問(wèn)題的標(biāo)準(zhǔn)方法是使用會(huì)話“cookie”,“HTTP 狀態(tài)管理機(jī)制”提供了對(duì)此的詳細(xì)介紹,在“請(qǐng)求注解”網(wǎng)站上將由 IETFRFC 2109 加以定義。一些獨(dú)立軟件供應(yīng)商 (ISV) 提供了跨 Extranet Web 應(yīng)用程序?qū)崿F(xiàn) Web SSO 的解決方案。 對(duì)于支持 Passport 身份驗(yàn)證的站點(diǎn),前文詳細(xì)介紹的 Microsoft Passport 服務(wù)也為用戶提供了 SSO 體驗(yàn)。 用戶可以將 Web SSO 技術(shù)與企業(yè) SSO 技術(shù)結(jié)合起來(lái),如 SharePoint Portal Server 站點(diǎn),它包括用于訪問(wèn)唯一身份驗(yàn)證目錄內(nèi)舊版應(yīng)用程序數(shù)據(jù)的 Web 部件。在此示例中,Web SSO 技術(shù)提供對(duì)網(wǎng)站的訪問(wèn),而企業(yè) SSO 技術(shù)則提供對(duì)舊版應(yīng)用程序數(shù)據(jù)的訪問(wèn)。 憑證映射和企業(yè)單一登錄 “企業(yè) SSO”是指采用憑證映射形式提供 SSO 體驗(yàn)的任何技術(shù)。其中,憑證映射是一個(gè)必備因素,因?yàn)樯矸蒡?yàn)證會(huì)涉及多種不同的身份存儲(chǔ)或目錄。某項(xiàng)服務(wù)(運(yùn)行于客戶端或服務(wù)器上)可以代表帳戶登錄到目標(biāo)應(yīng)用程序,模擬 SSO 體驗(yàn)。這種服務(wù)必須從憑證映射存儲(chǔ)或數(shù)據(jù)庫(kù)中查找相應(yīng)的憑證(帳戶、密碼等等)。 Microsoft BizTalk? Server、Host Integration Server、SharePoint? Portal Server、Windows 憑證管理器以及來(lái)自 PassLogix、Protocom 和 Version3 等 ISV 的產(chǎn)品都采用各種不同的企業(yè) SSO 技術(shù)來(lái)針對(duì)遺留系統(tǒng)和使用自身目錄進(jìn)行身份驗(yàn)證的應(yīng)用程序?qū)崿F(xiàn) SSO,甚至用它來(lái)實(shí)現(xiàn)對(duì)不可信 Windows 域中資源的訪問(wèn)。 許多組織都存在擁有多個(gè)非信任身份存儲(chǔ)卻沒(méi)有實(shí)現(xiàn) SSO 的現(xiàn)象,與之相比“企業(yè) SSO”能夠提供更好的用戶體驗(yàn)。“企業(yè) SSO”方法應(yīng)與配置和密碼管理方法相集成,以確保無(wú)縫的體驗(yàn)和最大程度減少幫助臺(tái)的呼叫次數(shù)。這種方法在最大程度降低總擁有成本的同時(shí)還可提供最佳的用戶體驗(yàn)。 注意 由于“桌面集成的 SSO”與選項(xiàng)目錄緊密集成,而且不需要額外的冗余目錄和憑證映射數(shù)據(jù)庫(kù)配置和管理,因此要優(yōu)于企業(yè) SSO。 有關(guān)通過(guò)“企業(yè) SSO”實(shí)現(xiàn)憑證映射的更多信息,請(qǐng)參見本系列文章中的“Intranet 訪問(wèn)管理”一文。 Windows 憑證管理器 Windows XP Professional 和 Windows Server 2003 中包括一項(xiàng)“存儲(chǔ)的用戶名和密碼”功能,它也可提供憑證管理功能。此組件可以根據(jù)所嘗試的身份驗(yàn)證類型,保存用戶憑證,并在以后的訪問(wèn)嘗試過(guò)程中重新加以使用。 圖 6.2.“存儲(chǔ)的用戶名和密碼”支持多組憑證的 SSO 如果應(yīng)用程序不允許用戶保存憑證,用戶則必須手動(dòng)訪問(wèn)“存儲(chǔ)的用戶名和密碼”來(lái)設(shè)置該資源的憑證。憑證管理器支持以下類型的憑證: ? | Kerberos 版本5 協(xié)議和 NTLM 身份驗(yàn)證的用戶名/密碼組合。 | ? | 使用 SSL/TLS 進(jìn)行客戶端身份驗(yàn)證的 X.509 數(shù)字證書。 | ? | 用于 Web 身份驗(yàn)證的 Microsoft Passport 憑證。 | 注意 用戶可以使用 Windows 憑證管理器通過(guò) SSL/TLS X.509 客戶端證書身份驗(yàn)證提供 Web SSO 體驗(yàn)。默認(rèn)情況下,只要用戶擁有一個(gè)以上的有效證書,就會(huì)看到提示選擇身份驗(yàn)證證書的消息。憑證管理器可確保在驗(yàn)證對(duì)特定資源的訪問(wèn)權(quán)限時(shí)自動(dòng)提供適當(dāng)?shù)淖C書。 有關(guān) Windows 憑證管理器的更多信息,請(qǐng)參見本系列文章中的“Intranet 訪問(wèn)管理”一文。 授權(quán) 授權(quán)是應(yīng)用程序或平臺(tái)通過(guò)對(duì)比用戶權(quán)利和資源安全配置來(lái)確定資源訪問(wèn)權(quán)的過(guò)程。例如,用戶可對(duì)文件服務(wù)器提出驗(yàn)證請(qǐng)求,服務(wù)器隨后確定用戶是否具有讀、寫或刪除文件的能力。 與 Windows Server 2003 操作系統(tǒng)及 Active Directory 相集成的應(yīng)用程序使用操作系統(tǒng)的內(nèi)置功能來(lái)執(zhí)行授權(quán)。 Windows Server 2003 支持兩種授權(quán)機(jī)制:基于 Windows 訪問(wèn)控制列表 (ACL) 的模擬模型,和基于角色的新型授權(quán)管理器。此外,Microsoft ASP.NET 應(yīng)用程序還可以使用 ASP.NET 角色進(jìn)行授權(quán)。以下部分將詳細(xì)討論這兩種機(jī)制。 Windows 模擬和訪問(wèn)控制列表 Microsoft Windows NT 3.1 引入了模擬和 ACL 模型來(lái)為服務(wù)和應(yīng)用程序提供授權(quán)。模擬是為實(shí)現(xiàn)無(wú)縫用戶體驗(yàn)和輕松管理而緊密耦合身份驗(yàn)證和授權(quán)的產(chǎn)物。 身份驗(yàn)證數(shù)據(jù)包首先驗(yàn)證用戶,然后為該用戶構(gòu)建“安全上下文”。安全上下文代表用戶身份和所屬的組以及用戶的權(quán)利。一旦身份驗(yàn)證數(shù)據(jù)包生成安全上下文,應(yīng)用程序或服務(wù)即可獲得允許訪問(wèn)資源的安全上下文。換句話說(shuō),服務(wù)在嘗試訪問(wèn)資源時(shí),可以使用用戶的安全上下文(而非服務(wù)自身的上下文)獲得訪問(wèn)權(quán),在本地模擬用戶。 這是一個(gè)很重要的概念,因?yàn)榇蠖鄶?shù)服務(wù)在計(jì)算機(jī)中都擁有廣泛的權(quán)限。例如,在運(yùn)行 Windows 的服務(wù)器上提供文件和打印服務(wù)的服務(wù)器消息塊 (SMB) 服務(wù)可作為本地系統(tǒng)運(yùn)行,而且可以訪問(wèn)任何資源。為了根據(jù)文件所有者或系統(tǒng)管理員所建立的規(guī)則來(lái)限制用戶對(duì)文件的訪問(wèn),SMB 服務(wù)應(yīng)模擬遠(yuǎn)程用戶。 Windows 授權(quán)模型的另一部分是基于對(duì)象的 ACL。對(duì)象的 ACL 定義了對(duì)象的訪問(wèn)級(jí)別安全主體(用戶或組)。例如,文件的 ACL 可以定義一個(gè)用戶擁有讀取某文件的權(quán)限,而另一個(gè)用戶擁有讀取和刪除該文件的權(quán)限。 操作系統(tǒng)(特別是 NT 對(duì)象管理器)是使用此模型訪問(wèn)對(duì)象時(shí)的最終仲裁者?!癗T 對(duì)象管理器”將用戶的安全上下文與對(duì)象的 ACL 加以比較,完成仲裁操作。由于操作系統(tǒng)是最終的仲裁者,因此模擬/ACL 模型的安全特性非常適合多個(gè)應(yīng)用程序可以訪問(wèn)系統(tǒng)資源的方案。 然而,模擬/ACL 模型的某些方面仍有待進(jìn)一步改進(jìn),其中包括: ? | 性能。對(duì)于同時(shí)將內(nèi)容傳送給多個(gè)不同用戶的服務(wù),使用模擬來(lái)切換上下文會(huì)增加服務(wù)器的負(fù)荷,影響應(yīng)用程序的可伸縮性。 | ? | 靈活性。使用模擬模型時(shí),應(yīng)用程序開發(fā)人員或服務(wù)管理員必須在域級(jí)別更改組成員身份之后才能為用戶創(chuàng)建新組或角色。域管理員反對(duì)為單一應(yīng)用程序創(chuàng)建大量組供其使用,致使應(yīng)用程序開發(fā)人員只能利用目前現(xiàn)有的組進(jìn)行工作。 | ? | 商業(yè)規(guī)則。模擬/ACL 模型充分表現(xiàn)了對(duì)象的授權(quán),卻很難描述商業(yè)規(guī)則邏輯,例如日期時(shí)間或其他運(yùn)行時(shí)邏輯。例如,用戶可能希望實(shí)行一種僅允許特定的人員在特定時(shí)間執(zhí)行特定動(dòng)作的授權(quán)策略。 | 為克服這些問(wèn)題,Windows Server 2003 為系統(tǒng)管理員和應(yīng)用程序開發(fā)人員加入了“授權(quán)管理器”。授權(quán)管理器的 Windows 2000 版本可從 Microsoft.com 的 Windows 2000 授權(quán)管理器運(yùn)行時(shí) 下載頁(yè)面獲得。 Windows Server 2003 授權(quán)管理器 Windows Server 2003 中的“授權(quán)管理器”是新的基于角色的訪問(wèn)控制 (RBAC) 接口?!笆跈?quán)管理器”為開發(fā)人員提供了實(shí)現(xiàn)以下目標(biāo)的能力: ? | 簡(jiǎn)化應(yīng)用程序訪問(wèn)控制管理。 | ? | 提供精簡(jiǎn)自然的開發(fā)模型。 | ? | 實(shí)現(xiàn)靈活而動(dòng)態(tài)的授權(quán)決策。 | 對(duì)于特定任務(wù),“授權(quán)管理器”接口將用戶與應(yīng)用程序內(nèi)的各種角色有機(jī)地組織在一起,并在模擬這些角色時(shí)給予其訪問(wèn)權(quán)限。下圖顯示了訪問(wèn)某個(gè)應(yīng)用程序的三個(gè)不同用戶。“授權(quán)管理器”將每個(gè)用戶都映射到在授權(quán)策略存儲(chǔ)中所定義的角色。 圖 6.3.授權(quán)管理器如何定義和應(yīng)用角色 “授權(quán)管理器”提供了根據(jù)每個(gè)應(yīng)用程序的需求定義和維護(hù)邏輯角色及任務(wù)的能力。這種根據(jù)組織結(jié)構(gòu)表現(xiàn)安全模型的方式簡(jiǎn)化了訪問(wèn)控制管理。此外,任務(wù)和角色的定義有助于為應(yīng)用程序工作流建模,也有助于通過(guò)“授權(quán)管理器”為開發(fā)人員提供一個(gè)以應(yīng)用程序?yàn)橹行牡淖匀画h(huán)境。 “授權(quán)管理器”還動(dòng)態(tài)限定運(yùn)行時(shí)賦予的權(quán)利。這一功能解決了行業(yè) (LOB) Web 應(yīng)用程序(例如支出報(bào)告應(yīng)用程序或基于 Web 的購(gòu)物應(yīng)用程序)存在的特殊授權(quán)問(wèn)題。 對(duì)于這種應(yīng)用程序,對(duì)既定永久對(duì)象的訪問(wèn)往往不能做出授權(quán)決策。而是需要檢查工作流程或包含多個(gè)不同操作的操作組,例如查詢數(shù)據(jù)庫(kù)和發(fā)送電子郵件消息。這樣的訪問(wèn)決策不僅基于令牌組成員身份,還基于商業(yè)邏輯,例如在支出應(yīng)用程序或工作流完成驗(yàn)證中提交的數(shù)量。這些沒(méi)有既定永久對(duì)象的應(yīng)用程序沒(méi)有放置 ACL 的位置。這些動(dòng)態(tài)訪問(wèn)決策采用“授權(quán)管理器”所提供的動(dòng)態(tài)商業(yè)規(guī)則(稱為 BizRule)形式,易于使用。 BizRule 通常使用在應(yīng)用程序運(yùn)行期間檢查訪問(wèn)權(quán)限時(shí)所執(zhí)行的 Microsoft Visual Basic? Scripting Edition 腳本或 JScript? 例程來(lái)實(shí)現(xiàn)。如果 BizRule 成功,應(yīng)用程序便執(zhí)行所請(qǐng)求的操作。 定義應(yīng)用程序所用邏輯角色和任務(wù)的授權(quán)管理器策略可以存儲(chǔ)在 Active Directory 或 Active Directory 應(yīng)用程序模式的應(yīng)用程序分區(qū)中,也可以存儲(chǔ)在服務(wù)器或網(wǎng)絡(luò)上的 XML 文件中。 有關(guān)使用 Windows Server 2003 授權(quán)管理器的 RBAC 的更多信息,請(qǐng)參見 TechNet 上的授權(quán)管理器概念 頁(yè)面。 IIS 6.0 中提供了一個(gè)用于說(shuō)明應(yīng)用程序如何使用授權(quán)管理器角色框架的示例。Windows Server 2003 中包含 IIS 6.0,它通過(guò)與“授權(quán)管理器”的集成來(lái)實(shí)現(xiàn) IIS 6.0 URL 授權(quán)。實(shí)現(xiàn)這一集成后,Web 應(yīng)用程序管理員可以根據(jù)自定義的用戶角色、LDAP 查詢和 BizRule 來(lái)控制對(duì) URL 的訪問(wèn)。 在 IIS 6.0 中授權(quán)用戶對(duì)網(wǎng)頁(yè)的訪問(wèn)時(shí),可能需要在 Web 應(yīng)用程序所用的資源上管理多個(gè)自由訪問(wèn)控制列表 (DACL)。Web 應(yīng)用程序的資源可能包括網(wǎng)頁(yè)文件、數(shù)據(jù)庫(kù)記錄和注冊(cè)表項(xiàng)。為了維護(hù) DACL,管理員必須確切知道每個(gè)對(duì)象在 Web 應(yīng)用程序中執(zhí)行針對(duì)性任務(wù)必須具備哪些后端權(quán)限要求。 IIS 6.0 URL 授權(quán)使管理員可以通過(guò)授予用戶對(duì)構(gòu)成 Web 應(yīng)用程序的 URL 的訪問(wèn)權(quán)限,來(lái)簡(jiǎn)化訪問(wèn)管理??蛻舳苏?qǐng)求 URL 時(shí),IIS 6.0 URL 授權(quán)將根據(jù)用戶角色驗(yàn)證用戶的訪問(wèn)權(quán)限。必要時(shí),Web 應(yīng)用程序可以使用授權(quán)管理器角色框架來(lái)進(jìn)一步限定對(duì)資源和操作的訪問(wèn)。 ASP.NET 授權(quán) ASP.NET 提供了基于角色的授權(quán)模型,這種模型使用 Active Directory 組和應(yīng)用程序派生角色。授權(quán)管理器 RBAC 和基于 ASP.NET 角色的授權(quán)有一些相似之處,但卻通過(guò)不同的機(jī)制來(lái)實(shí)現(xiàn)。ASP.NET 角色對(duì)于不能歸屬到更大型應(yīng)用程序組中的獨(dú)立應(yīng)用程序最為有用。 信任和聯(lián)合 有時(shí)您可能需要鏈接兩個(gè)或多個(gè)不同的身份存儲(chǔ),例如在您需要實(shí)現(xiàn)合作關(guān)系安排或使用不同的外部和內(nèi)部目錄結(jié)構(gòu)時(shí)。這種鏈接使得僅對(duì)一個(gè)身份存儲(chǔ)擁有驗(yàn)證資格的用戶可針對(duì)另一個(gè)身份存儲(chǔ)進(jìn)行驗(yàn)證,即使他們?cè)谶@個(gè)身份存儲(chǔ)中沒(méi)有數(shù)字身份,也能夠成功進(jìn)行驗(yàn)證。這種安排稱為信任關(guān)系。 信任關(guān)系存在于定義了安全邊界的不同領(lǐng)域之間。在 Windows NT 和 Active Directory 環(huán)境中,可以在域之間建立信任。在 Windows Server 2003 中,可以在林結(jié)構(gòu)之間建立更高的信任級(jí)別。但林結(jié)構(gòu)內(nèi)部各域之間具有隱性的信任關(guān)系。 與 Windows Server 2003 及 Active Directory 相集成的應(yīng)用程序使用操作系統(tǒng)的內(nèi)置功能來(lái)建立和維護(hù)信任。 管理信任關(guān)系 在較高級(jí)別,信任關(guān)系只提供了一種在領(lǐng)域之間進(jìn)行身份驗(yàn)證的方法。但是,信任機(jī)制變得越來(lái)越復(fù)雜,因?yàn)槿粢股矸蒡?yàn)證和后續(xù)授權(quán)真正具備實(shí)用價(jià)值,必須在領(lǐng)域之間執(zhí)行許多任務(wù)。 本節(jié)的其余部分將介紹 Windows 平臺(tái)中可用的信任類型,以及如何使用信任來(lái)解決身份和訪問(wèn)管理問(wèn)題。 外部信任 Microsoft Windows NT Server 中引入了域信任的概念。Windows NT 域信任(現(xiàn)稱外部信任)允許一個(gè) Windows NT 域信任另一個(gè) Windows NT 域,將其視為一種特權(quán)來(lái)驗(yàn)證隸屬于該域的用戶。外部信任既可以是單向的也可以是雙向的,信任的方向決定著身份驗(yàn)證和訪問(wèn)可能發(fā)生的方向,如下圖所示。 圖 6.4.信任域和被信任域之間的關(guān)系 Windows NT Server 4.0 模型非常靈活,它允許各部門根據(jù)需要采用自下而上的基層部署模式來(lái)實(shí)現(xiàn) Windows NT 4.0 域。其問(wèn)題在于,由于各個(gè)大型公司引入了越來(lái)越多的域,使得管理外部信任關(guān)系逐漸成為一個(gè)非常嚴(yán)重的問(wèn)題。因?yàn)槊總€(gè)部署的域都可能擁有 n 多個(gè)信任關(guān)系,因此要管理的信任關(guān)系總數(shù)隨著域數(shù)量的增加而迅速增加。擁有 4 個(gè)域的小型公司可能只需管理 12 個(gè)不同的信任關(guān)系,而擁有 10 個(gè)域的較大型公司則可能需要管理 90 個(gè)信任關(guān)系。擁有 100 個(gè)域的公司則要管理數(shù)量更為龐大的信任關(guān)系。 Windows 2000 Server 林 為簡(jiǎn)化大型組織中的信任管理,Microsoft Windows 2000 Server 引入了 Active Directory 林的概念。 Active Directory 林保留了 Windows NT Server 4.0 隨需式由下而上信任模型的靈活性,同時(shí)解決了執(zhí)行自上而下信任管理的問(wèn)題,如下圖所示。 圖 6.5.單一 Windows 2000 Server 林 此圖形表示一個(gè)擁有單一 Windows 2000 Server 林的組織。林結(jié)構(gòu)內(nèi)部的信任關(guān)系是隱式信任,其功能與雙向外部信任相同,只是這些信任關(guān)系是向同一林中添加域(可看作林中的樹)時(shí)自動(dòng)創(chuàng)建的。林結(jié)構(gòu)內(nèi)部的域是有層次的,使組織的網(wǎng)絡(luò)能夠反映出組織的業(yè)務(wù)狀況。 遺憾的是,Windows 2000 Server 并沒(méi)有最終解決信任關(guān)系問(wèn)題。這種信任關(guān)系假設(shè)大多數(shù)公司在其整個(gè)網(wǎng)絡(luò)和資源范圍內(nèi)部署單一林結(jié)構(gòu)。然而,眾多原因決定了這種假設(shè)并不成立。 例如,一些非常龐大的組織沒(méi)有集中的信任管理組負(fù)責(zé)管理組織的所有資源。因此在這種組織中,組織各個(gè)不同部分間存在目錄服務(wù)體系結(jié)構(gòu)必須實(shí)現(xiàn)的自然安全邊界。另一個(gè)常見的例子就是,對(duì)單獨(dú) Intranet 林和 Extranet 林的需求。盡管開發(fā)人員可以將 Extranet 設(shè)計(jì)為 Intranet 林的一個(gè)域,但是出于安全考慮,許多組織還是希望在 Extranet 和 Intranet 之間有更大程度的隔離。 有關(guān) Windows 域和林安全邊界特性的更多信息,請(qǐng)參見 Microsoft.com 上的“創(chuàng)建和增強(qiáng)安全邊界”。 對(duì)于具有多個(gè) Windows 2000 Active Directory 林但又希望在不同林的域之間使用信任關(guān)系的組織來(lái)說(shuō),必須在不同林的各域之間建立顯式信任關(guān)系。與在每個(gè) Windows NT Server 4.0 域之間建立信任關(guān)系相比,這種配置的實(shí)現(xiàn)只是稍微簡(jiǎn)單了一點(diǎn)點(diǎn)而已,所以必須找到一種更為優(yōu)秀的解決方案。 Windows Server 2003 林信任 為簡(jiǎn)化多個(gè)林的部署,Windows Server 2003 建立了林信任的概念。林信任允許管理員通過(guò)單一信任關(guān)系聯(lián)合兩個(gè) Active Directory 林,以在兩個(gè)林之間提供無(wú)縫的身份驗(yàn)證和授權(quán)體驗(yàn)。林信任是兩個(gè)林的根域之間的單一信任鏈接;它可以在每個(gè)林中的所有域之間建立起一種可傳遞的信任關(guān)系。例如,如果“林 A”信任“林 B”,則通過(guò)林信任,“林 A”中的所有域?qū)⑿湃巍傲?B”中的所有域。下圖說(shuō)明了這一概念: 圖 6.6.Windows Server 2003 林信任關(guān)系 但是,林信任不會(huì)跨林傳遞。也就是說(shuō),如果“林 A”信任“林 B”,而“林 B”又信任“林 C”,“林 A”并不會(huì)自動(dòng)信任“林 C”。 有關(guān)使用和配置 Windows Server 2003 跨林信任的更多信息,請(qǐng)參見 Microsoft TechNet 上的在 Windows Server 2003 中規(guī)劃和實(shí)施聯(lián)合林 頁(yè)面。 使用林信任 林信任使 Windows Server 2003 中的聯(lián)合林概念成為可能。前面提過(guò),林信任允許在兩個(gè)林中所有域之間傳遞信任關(guān)系;這種信任建立在兩個(gè)林的根域之間。 林信任既可以是單向信任,也可以是雙向信任。在上圖中,“林 A”和“林 B”之間的信任關(guān)系是雙向的。因此,“林 A”中的用戶可以針對(duì)“林 B”中的資源進(jìn)行驗(yàn)證,“林 B”中的用戶也可以針對(duì)“林 A”中的資源進(jìn)行驗(yàn)證。除身份驗(yàn)證外,林信任還支持授權(quán),從而每個(gè)林中的資源所有者都可以將主體從另一個(gè)林添加到 DACL 和組中,或者根據(jù)這些組創(chuàng)建角色。 使用影子帳戶代替信任 有時(shí),一些安全性要求會(huì)禁止在林之間使用 Windows 信任機(jī)制。在這種情況下,可以在一個(gè)目錄中創(chuàng)建影子帳戶來(lái)鏡像另一個(gè)目錄中的帳戶。影子帳戶通常只從源領(lǐng)域鏡像特定應(yīng)用程序或方案所需要的身份信息。為滿足安全性要求,特別敏感的身份屬性將不會(huì)出現(xiàn)。敏感信息包括身份的社會(huì)保障號(hào)或用戶密碼等信息。 盡管使用員工影子帳戶這一概念可能不太直觀,但卻非常適合這樣一種情況:組織使用 Active Directory 的 Intranet 實(shí)例進(jìn)行身份驗(yàn)證,又想具有可供員工使用的 Extranet。在 Extranet 上驗(yàn)證員工身份有以下兩個(gè)選擇: ? | 使用從外圍網(wǎng)絡(luò)(也稱 DMZ、外圍安全區(qū)或屏蔽子網(wǎng))到 Intranet 的林或域信任。 | ? | 在外圍網(wǎng)絡(luò)中創(chuàng)建影子帳戶。 | 第一種方式需要開放許多端口,從而可以允許一條路徑通過(guò)分隔外圍網(wǎng)絡(luò)和 Intranet 的防火墻。這種方式適用于許多組織,但還有一些組織需要將其外圍網(wǎng)絡(luò)和 Intranet 之間徹底隔離。 對(duì)于需要嚴(yán)格網(wǎng)絡(luò)隔離的組織而言,使用影子帳戶可能是最好的選擇。微軟建議通過(guò)自動(dòng)化機(jī)制來(lái)創(chuàng)建影子帳戶,例如 Microsoft Identity Integration Server 2003, Enterprise Edition (MIIS 2003 SP1) 中提供的機(jī)制。在某些允許安全性較低的服務(wù)器(比如 Extranet 中的服務(wù)器)采用非密碼身份驗(yàn)證機(jī)制的場(chǎng)合,影子帳戶甚至能提高網(wǎng)絡(luò)安全性。這種示例包括基于安全套接字層 (SSL) 3.0 的身份驗(yàn)證和傳輸層安全 (TLS) 1.0 客戶端證書身份驗(yàn)證,或一次性密碼身份驗(yàn)證機(jī)制(例如 RSA Security Inc. 的 SecurID 雙因素身份驗(yàn)證產(chǎn)品)。 公鑰基礎(chǔ)結(jié)構(gòu)信任 公鑰基礎(chǔ)結(jié)構(gòu) (PKI) 是由以下要素組成的一套體系:數(shù)字證書、認(rèn)證機(jī)構(gòu) (CA) ,以及其他通過(guò)公鑰加密來(lái)檢查和驗(yàn)證電子事務(wù)中每一方有效性的注冊(cè)機(jī)構(gòu)。但要檢查和驗(yàn)證有效性,每一方都必須信任證書的頒發(fā)者(通常是 CA)。 對(duì)于 Windows 用戶、計(jì)算機(jī)和服務(wù),如果受信任的根認(rèn)證機(jī)構(gòu)存儲(chǔ)中存在根證書副本以及有效的認(rèn)證路徑,則會(huì)建立證書頒發(fā)機(jī)構(gòu)中的信任。有效的認(rèn)證路徑表示認(rèn)證路徑中沒(méi)有任何被吊銷或已過(guò)期的證書。認(rèn)證路徑中包含頒發(fā)給認(rèn)證層次結(jié)構(gòu)中每個(gè) CA(從從屬 CA 至根 CA)的所有證書。 例如,對(duì)于根 CA,認(rèn)證路徑就是一個(gè)證書,是其自簽名的證書。對(duì)于從屬 CA,它僅位于認(rèn)證層次結(jié)構(gòu)中根 CA 之下,其認(rèn)證路徑使用兩個(gè)證書:其自己的證書和根 CA 證書。 若要為計(jì)算機(jī)和計(jì)算機(jī)托管的應(yīng)用程序建立 PKI 信任,最簡(jiǎn)單直觀的方法是將根證書導(dǎo)入受信任根認(rèn)證機(jī)構(gòu)存儲(chǔ)中。例如,如果 Contoso Pharmaceuticals(一個(gè)虛構(gòu)的組織)的 Web 服務(wù)器將 Fabrikam Inc.(另一個(gè)虛構(gòu)的組織)的根證書 CA 安裝到根認(rèn)證機(jī)構(gòu)的存儲(chǔ)中,Contoso Web 服務(wù)器就會(huì)信任由 Fabrikam CA 所頒發(fā)的任何有效證書。但這一流程只是建立事務(wù)的信任部分,而不會(huì)在 Web 服務(wù)器上建立身份或上下文。若要?jiǎng)?chuàng)建從身份到上下文的映射,需要執(zhí)行一些其他操作,例如將證書中的某些信息映射到 Active Directory 中的安全主體。 有關(guān)使用 Active Directory 證書映射功能進(jìn)行相互身份驗(yàn)證的更多信息,請(qǐng)參見 Microsoft Windows 2000 Server 網(wǎng)站上的循序漸進(jìn)指南:將證書映射到用戶帳戶 頁(yè)面。 雖然受信任根認(rèn)證機(jī)構(gòu)的存儲(chǔ)機(jī)制相當(dāng)容易部署,但它無(wú)法滿足在建立兩個(gè)組織(如 Contoso 和 Fabrikam)間聯(lián)合信任這類復(fù)雜場(chǎng)合下的安全性要求??梢钥紤] Contoso 和 Fabrikam 用戶都可以提供有效證書來(lái)訪問(wèn) Contoso 網(wǎng)站這種方案。在這種情況下,外部 Active Directory 中將包含來(lái)自 Contoso 和 Fabrikam CA 的證書映射。 一種操作是建立基于證書主題的映射,例如:E=fred@fabrikam.com。這種方法的問(wèn)題是沒(méi)有綁定信任。未綁定的信任意味著 Contoso 愿意完全信任 Fabrikam,不會(huì)頒發(fā)主題為 E=fred@contoso.com 的證書,此處 fred@contoso.com 是 Contoso 組織中的用戶,而不是 Fabrikam 組織中的用戶。這種情況下,證書持有者可能會(huì)獲得對(duì) Contoso 站點(diǎn)上敏感信息的訪問(wèn)權(quán)限。出現(xiàn)這個(gè)問(wèn)題并不是因?yàn)?PKI 信任本身存在不足,而是因?yàn)樽C書定義過(guò)于廣泛。解決這一問(wèn)題的辦法是建立可控性更高的 PKI 信任機(jī)制,使 Fabrikam 只能為 @fabrikam.com 域頒發(fā)證書,而不能為 @contoso.com 域頒發(fā)證書。 限定從屬 在 Windows 2000 網(wǎng)絡(luò)中,根本無(wú)法實(shí)現(xiàn) CA 層次結(jié)構(gòu)的真正交叉認(rèn)證。唯一可替代的方法是定義信任特定 CA 和限制證書用途的證書信任列表 (CTL)。 Windows 2003 Server 中所引入的限定從屬是交叉認(rèn)證 CA 層次結(jié)構(gòu)的過(guò)程,此過(guò)程使用基本策略、命名和應(yīng)用程序約束條件來(lái)限制從合作伙伴 CA 層次結(jié)構(gòu)或同一組織內(nèi)的輔助層次結(jié)構(gòu)中接受的證書。通過(guò)限定從屬,CA 管理員可以明確地定義其組織信任合作伙伴 PKI 所頒發(fā)的證書。限定從屬還提供了根據(jù)策略原則在組織內(nèi)劃分和控制證書頒發(fā)的方法。 限定從屬還允許在不同信任層次結(jié)構(gòu)中的 CA 之間建立信任。這種類型的信任關(guān)系還可稱為交叉認(rèn)證。通過(guò)這種信任關(guān)系,限定從屬不再限定于從屬 CA。使用一個(gè)層次結(jié)構(gòu)中的從屬 CA 和另一個(gè)層次結(jié)構(gòu)中的根 CA 可以在兩層次結(jié)構(gòu)之間建立信任。 限定從屬允許在 PKI 中為域內(nèi)部和域之間設(shè)置額外的信任條件,以擴(kuò)展信任層次結(jié)構(gòu)。通過(guò)限定從屬,信任層次結(jié)構(gòu)中的每個(gè)限定從屬 CA 可以具有不同的規(guī)則,來(lái)控制其證書的頒發(fā)方式及使用方式。 有一個(gè)示例可以說(shuō)明如何使用信任條件來(lái)解決先前所提到的證書定義過(guò)廣的問(wèn)題,即在 Contoso 和 Fabrikam 層次結(jié)構(gòu)之間建立交叉認(rèn)證時(shí)使用命名空間約束條件。通過(guò)這種方式,Contoso 將只接受指定了 fabrikam.com 域的 Fabrikam CA 證書。 有關(guān)限定從屬的更多信息,請(qǐng)參見 Microsoft TechNet 上的限定從屬 頁(yè)面。 實(shí)施聯(lián)合 聯(lián)合身份管理是基于標(biāo)準(zhǔn)的技術(shù)和信息技術(shù),支持跨組織和平臺(tái)邊界的分布式標(biāo)識(shí)、身份驗(yàn)證及授權(quán)。聯(lián)合系統(tǒng)可以跨組織邊界進(jìn)行互操作,并可以將使用不同技術(shù)、身份存儲(chǔ)、安全方法和編程模型的過(guò)程連接起來(lái)。在聯(lián)合系統(tǒng)內(nèi)部,組織需要通過(guò)一種標(biāo)準(zhǔn)化的安全方式來(lái)表示為受信任的合作伙伴和客戶所提供的服務(wù)。組織還必須實(shí)施商業(yè)運(yùn)作所仰賴的策略,如: ? | 信任哪些其他組織和用戶。 | ? | 接受哪些類型的憑證和請(qǐng)求。 | ? | 實(shí)施哪些隱私策略。 | Microsoft Windows Server 2003 R2 引入了 Active Directory 聯(lián)合服務(wù) (ADFS),使得組織可以安全共享用戶的身份信息。ADFS 提供了 Web 單一登錄 (SSO) 技術(shù),以在單一聯(lián)機(jī)會(huì)話的生命期內(nèi)實(shí)現(xiàn)用戶對(duì)多個(gè) Web 應(yīng)用程序的驗(yàn)證。ADFS 通過(guò)跨不同安全和企業(yè)邊界安全共享數(shù)字身份、權(quán)利或“聲明”的方式實(shí)現(xiàn)了此目標(biāo)。 ADFS 與 Active Directory 以及 Active Directory 應(yīng)用程序模式 (ADAM)} 一起工作。具體來(lái)說(shuō),ADFS 使用 Active Directory 的企業(yè)級(jí)部署或 ADAM 的實(shí)例進(jìn)行工作。在使用 Active Directory 時(shí),ADFS 可以利用 Active Directory 中強(qiáng)大的身份驗(yàn)證技術(shù),包括 Kerberos、X.509 數(shù)字證書和智能卡。在使用 ADAM 時(shí),ADFS 使用輕型目錄訪問(wèn)協(xié)議 (LDAP) 綁定來(lái)驗(yàn)證用戶身份。 ADFS 支持在 Internet 上應(yīng)用分布式身份驗(yàn)證和授權(quán)。ADFS 可集成到組織和部門的現(xiàn)有訪問(wèn)管理解決方案中,將組織所使用的條款轉(zhuǎn)換為聯(lián)合時(shí)商定的聲明。ADFS 可以創(chuàng)建、保護(hù)和檢查在組織之間移動(dòng)的聲明。同時(shí)它還可以審核、監(jiān)視組織和部門間的活動(dòng),以確保事務(wù)處理的安全。 有關(guān) ADFS 的更多信息,請(qǐng)參見 Microsoft.com 上的 Windows Server 2003 R2 中的 Active Directory 聯(lián)合服務(wù) (ADFS) 概述 。 安全審核 審核提供了監(jiān)視訪問(wèn)管理事件和身份對(duì)象更改的方法。安全審核通常用于監(jiān)視問(wèn)題或違反安全性事件的出現(xiàn)。Windows 安全事件日志等技術(shù)、Windows 管理接口 (WMI) 以及 MOM 2005 SP1 等產(chǎn)品都可以提供全面的安全審核和報(bào)告。 審核目錄服務(wù) Active Directory 和 ADAM 與 Windows Server 2003 審核完全集成。Windows 安全事件日志反映目錄對(duì)象和屬性的更改,也反映目錄對(duì)象和屬性的授權(quán)策略、架構(gòu)和組策略。您可精確控制如何配置基于成功、失敗或嘗試操作的可審核事件。 審核身份驗(yàn)證 上述 Windows 身份驗(yàn)證機(jī)制都會(huì)在 Windows 安全事件日志中生成審核??梢允褂媒M策略配置要生成的審核(例如身份驗(yàn)證失敗或成功),也可以手動(dòng)配置每一臺(tái)服務(wù)器。 Windows Server 2003 還通過(guò)根據(jù)身份驗(yàn)證類型對(duì)身份驗(yàn)證進(jìn)行分類,提供了對(duì)身份驗(yàn)證事件的精確控制。例如,一種類型的審核跟蹤控制臺(tái)登錄,而另一種類型的審核則跟蹤網(wǎng)絡(luò)資源的身份驗(yàn)證嘗試。身份驗(yàn)證審核始終可以跟蹤到唯一的安全主體。 一旦啟用了用戶對(duì)身份存儲(chǔ)的驗(yàn)證,下一步驟即是需要指定用戶可以訪問(wèn)的資源。授權(quán)是控制資源訪問(wèn)權(quán)限的過(guò)程。 審核授權(quán) Windows Server 平臺(tái)完全支持授權(quán)操作的審核。對(duì)于模擬/ACL 模型,“NT 對(duì)象管理器”根據(jù)審核配置來(lái)報(bào)告對(duì)資源訪問(wèn)的審核。此項(xiàng)配置可以通過(guò)組策略來(lái)實(shí)施,也可以在每臺(tái)服務(wù)器上手動(dòng)實(shí)施。系統(tǒng)生成這些審核之后,審核事件將會(huì)出現(xiàn)在“系統(tǒng)安全事件日志”中。 審核配置功能非常精確,審核內(nèi)容的指定也很方便,例如可以輕松指定僅審核文件的失敗訪問(wèn)嘗試。因?yàn)樯矸蒡?yàn)證和授權(quán)機(jī)制緊密地集成在一起,因此授權(quán)審核根據(jù)其唯一安全標(biāo)識(shí)符 (SID) 來(lái)指定訪問(wèn)資源的安全主體。 “授權(quán)管理器”支持運(yùn)行時(shí)審核和“授權(quán)管理器”策略更改審核。運(yùn)行時(shí)審核使用失敗或成功的審核記錄來(lái)報(bào)告應(yīng)用程序初始化、上下文創(chuàng)建與刪除和對(duì)象訪問(wèn)?!笆跈?quán)管理器”策略更改審核可以報(bào)告策略存儲(chǔ)的任何變化,包括對(duì)策略和策略定義的審核。 在單一安全領(lǐng)域或安全目錄林內(nèi)的身份驗(yàn)證和授權(quán)過(guò)程相對(duì)簡(jiǎn)單一些。然而,身份和訪問(wèn)管理往往需要面對(duì)鏈接兩種不同安全領(lǐng)域的要求,而這就需要在目錄服務(wù)之間或組織之間實(shí)現(xiàn)某種形式的信任。下一章將探討此項(xiàng)要求。 審核信任 Windows Server 2003 會(huì)詳細(xì)而充分地審核信任配置。您可以審核信任的創(chuàng)建、刪除和修改等事件。信任審核事件會(huì)顯示在“安全事件日志”中。 |