安全性支援提供者介面架構

適用於:Windows Server 2022、Windows Server 2019、Windows Server 2016

這個針對 IT 專業人員的參考主題說明在 Security Support Provider Interface (SSPI) 結構中使用的 Windows 驗證協定。

Microsoft Security Support Provider Interface (SSPI) 是 Windows 驗證的基礎。 需要驗證的應用程式與基礎建設服務,請使用 SSPI 來提供。

SSPI 是 Windows Server 作業系統中 Generic Security Service API (GSSAPI) 的實作。 如需有關 GSSAPI 的詳細資訊,請參閱 IETF RFC Database 中的 RFC 2743 和 RFC 2744。

在 Windows 中呼叫特定驗證協定的預設 Security Support Providers (SSP) 將作為 DLL 合併到 SSPI 中。 以下各節將介紹這些預設 SSP。 如果其他 SSP 可以與 SSPI 一起操作,則可以將其納入。

如下圖所示,Windows 中的 SSPI 提供一種機制,它透過客戶端電腦和伺服器之間的現有通訊通道來傳送身份驗證權杖。 當兩台電腦或裝置需要進行身份驗證以便可以安全通訊時,身份驗證請求將路由到 SSPI,SSPI 將完成身份驗證過程,無論目前使用的網路協定如何。 SSPI 會傳回透明的二進位大型物件。 這些指令會在應用程式之間傳遞,此時它們可以傳遞至 SSPI 層。 因此,SSPI 使得應用程式能夠使用電腦或網路上可用的各種安全模型,而不用改變到安全系統的介面。

Diagram showing the Security Support Provider Interface Architecture

以下各節描述與 SSPI 互動的預設 SSP。 SSP 以不同方式在 Windows 作業系統中使用,以促進在不安全的網路環境中的安全通訊。

本主題還包括:

Security Support Provider 選取

Kerberos Security Support Provider

此 SSP 僅使用 Microsoft 所實現的 Kerberos 第 5 版協定。 該協定基於 Network Working Group 的 RFC 4120 和修訂草案。 它是與密碼或智慧卡一起用於互動式登入的業界標準協定。 它也是 Windows 中服務的首選身份驗證方法。

由於 Kerberos 協定自 Windows 2000 以來一直是預設身份驗證協定,因此所有域服務都支援 Kerberos SSP。 這些服務包括:

  • 使用 Lightweight Directory Access Protocol (LDAP) 的 Active Directory 查詢

  • 使用 Remote Procedure Call 服務的遠端伺服器或工作站管理

  • 列印服務

  • 客戶端 — 伺服器驗證

  • 使用 Server Message Block (SMB) 協定 (也稱為 Common Internet File System 或 CIFS) 的遠端檔案存取

  • 分散式檔案系統管理和轉介

  • Internet Information Services (IIS) 的內部網路驗證

  • Internet Protocol security (IPsec) 的安全授權單位驗證

  • 網域使用者和電腦對 Active Directory Certificate Services 的憑證要求

位置:%Windir%\System32\kerberos.dll

預設情況下,本主題開頭的 Applies To 清單中指定的版本以及 Windows Server 2003 和 Windows XP 中都包含此提供程式。

Kerberos 協定和 Kerberos SSP 的其他資源

NTLM Security Support Provider

NTLM Security Support Provider (NTLM SSP) 是 Security Support Provider Interface (SSPI) 使用的二進位訊息協定,可允許 NTLM 質詢回應驗證,以及協商完整性與機密性選項。 NTLM 用於任何使用 SSPI 驗證的地方,包括伺服器訊息區塊或 CIFS 驗證、HTTP Negotiate 驗證 (例如,Internet Web Authentication) 和 Remote Procedure Call 服務。 NTLM SSP 包含 NTLM 和 NTLM 版本 2 (NTLMv2) 驗證協定。

支援的 Windows 作業系統可以將 NTLM SSP 用於下列項目:

  • 客戶端/伺服器驗證

  • 列印服務

  • 使用 CIFS (SMB) 存取檔案

  • Secure Remote Procedure Call 服務或 DCOM 服務

位置:%Windir%\System32\msv1_0.dll

預設情況下,本主題開頭的 Applies To 清單中指定的版本以及 Windows Server 2003 和 Windows XP 中都包含此提供程式。

NTLM 協定和 NTLM SSP 的其他資源

Digest Security Support Provider

摘要式驗證是用於 Lightweight Directory Access Protocol (LDAP) 和網路驗證的業界標準。 摘要式驗證會以 MD5 雜湊或訊息摘要的方式透過網路傳送身分驗證。

摘要 SSP (Wdigest.dll) 用於下列項目:

  • Internet Explorer 和 Internet Information Services (IIS) 存取

  • LDAP 查詢

位置:%Windir%\System32\Wdigest.dll

預設情況下,本主題開頭的 Applies To 清單中指定的版本以及 Windows Server 2003 和 Windows XP 中都包含此提供程式。

摘要協定和摘要 SSP 的其他資源

Schannel Security Support Provider

Secure Channel (Schannel) 用於基於網路的伺服器驗證,例如當使用者嘗試訪問安全網路伺服器時。

TLS 協定、SSL 協定、Private Communications Technology (PCT) 協定和 Datagram Transport Layer (DTLS) 協定都是基於公用金鑰密碼學。 Schannel 提供所有這些協定。 所有的安全通道通訊協定都使用用戶端/伺服器模型。 安全通道 SSP 會使用公開金鑰憑證來驗證合作對象。 驗證參與方時,Schannel SSP 會依下列偏好順序選取協定:

  • Transport Layer Security (TLS) 版本 1.0

  • Transport Layer Security (TLS) 版本 1.1

  • Transport Layer Security (TLS) 版本 1.2

  • Secure Socket Layer (SSL) 版本 2.0

  • Secure Socket Layer (SSL) 版本 3.0

  • Private Communications Technology (PCT)

    注意:預設會停用 PCT。

選取的協定是客戶端和伺服器可以支援的偏好驗證協定。 例如,如果伺服器支援所有 Schannel 協定,而客戶端只支援 SSL 3.0 和 SSL 2.0,則驗證程序會使用 SSL 3.0。

當應用程式明確呼叫時,會使用 DTLS。 有關 DTLS 和 Schannel 供應商使用其他協定的詳細資訊,請參閱 Schannel Security Support Provider Technical Reference。

位置:%Windir%\System32\Schannel.dll

預設情況下,本主題開頭的 Applies To 清單中指定的版本以及 Windows Server 2003 和 Windows XP 中都包含此提供程式。

注意

TLS 1.2 是在 Windows Server 2008 R2 和 Windows 7 中引入這個供應商。 DTLS 是在 Windows Server 2012 和 Windows 8 中引入這個供應商。

TLS 和 SSL 協定以及 Schannel SSP 的其他資源

Negotiate Security Support Provider

Simple 和 Protected GSS-API Negotiation Mechanism (SPNEGO) 構成 Negotiate SSP 的基礎,可用於協商特定的身份驗證協定。 當應用程式呼叫 SSPI 以登入網路時,它可以指定 SSP 來處理要求。 如果應用程式指定 Negotiation SSP,它會分析要求,並根據客戶設定的安全性原則,選取適當的供應商來處理要求。

SPNEGO 在 RFC 2478 中規定。

在支援的 Windows 作業系統版本中,Negotiate 安全支援供應商會在 Kerberos 協定和 NTLM 之間進行選擇。 Negotiate 在預設情況下選擇 Kerberos 協定,除非參與身份驗證的系統之一無法使用該協定,或者呼叫應用程式未提供使用 Kerberos 協定的足夠資訊。

位置:%Windir%\System32\lsasrv.dll

預設情況下,本主題開頭的 Applies To 清單中指定的版本以及 Windows Server 2003 和 Windows XP 中都包含此提供程式。

Negotaite SSP 的其他資源

認證安全性支援提供者

Credential Security Service Provider (CredSSP) 在啟動新的 Terminal Services 和 Remote Desktop Services 工作階段時,提供單一登入 (SSO) 使用者體驗。 CredSSP 使應用程式能夠根據客戶端原則,將使用者身分驗證從客戶端電腦 (透過使用客戶端SSP) 委託到目標伺服器 (透過伺服器端 SSP)。 CredSSP 原則是使用群組原則設定,而且依預設會關閉認證委託。

位置:%Windir%\System32\credssp.dll

依預設,此估應商會包含在本主題開頭的 Applies to 清單指定的版本中。

Credentials SSP 的其他資源

Negotiate Extensions Security Support Provider

Negot Extensions (NegoExts) 是一種驗證套件,可協商由 Microsoft 和其他軟體公司實作的應用程式與案例使用 SSP (非 NTLM 或 Kerberos 協定)。

Negotiate 套件的擴充功能允許下列情形:

  • 聯合系統內的豐富客戶端可用性。 文件可以在 SharePoint 網站上存取,也可以使用功能齊全的 Microsoft Office 應用程式進行編輯。

  • Microsoft Office 服務的豐富客戶端支援。 使用者可以登入 Microsoft Office 服務,並使用功能齊全的 Microsoft Office 應用程式。

  • 裝載的 Microsoft Exchange Server 和 Outlook。 未建立網域信任,因為 Exchange Server 是裝載在網路上。 Outlook 使用 Windows Live 服務來驗證使用者。

  • 客戶端電腦與伺服器之間的豐富客戶端可用性。 使用作業系統的網路和驗證元件。

Windows Negotiate 套件處理 NegoExts SSP 的方式與處理 Kerberos 和 NTLM 的方式相同。 NegoExts.dll 會在啟動時載入 Local System Authority (LSA)。 當收到驗證要求時,NegoExts 會根據要求的來源在支援的 SSP 之間進行協商。 它收集身分驗證和原則,對它們進行加密,然後將該資訊傳送到適當的 SSP,並在其中建立安全權杖。

NegoExts 支援的 SSP 不是獨立的 SSP,例如 Kerberos 和 NTLM。 因此,在 NegoExts SSP 中,當驗證方法由於任何原因失敗時,將顯示或記錄驗證失敗的訊息。 無法進行重新協商或使用備援驗證方法。

位置:%Windir%\System32\negoexts.dll

依預設,此供應商會包含在本主題開頭的 Applies to 清單指定的版本中,這不包括 Windows Server 2008 和 Windows Vista。

PKU2U Security Support Provider

PKU2U 協定在 Windows 7 和 Windows Server 2008 R2 中作為 SSP 引入和實現。 此 SSP 可啟用點對點驗證,尤其是透過 Windows 7 中引入名為 HomeGroup 的媒體與檔案共用功能。 此功能允許非網域成員的電腦之間共用。

位置:%Windir%\System32\pku2u.dll

依預設,此供應商會包含在本主題開頭的 Applies to 清單指定的版本中,這不包括 Windows Server 2008 和 Windows Vista。

PKU2U 協定和 PKU2U SSP 的其他資源

Security Support Provider 選擇

Windows SSPI 可以使用任何透過已安裝的 Security Support Providers 支援的協定。 但是,由於並非所有作業系統都支援與任何運行 Windows Server 的給定電腦相同的 SSP軟體套件,因此客戶端和伺服器必須協商使用都支援的協定。 Windows Server 傾向於客戶端電腦和應用程式使用 Kerberos 協定 (如可能,這是一種基於標準的強協定) ,但是作業系統仍然允許不支援 Kerberos 協定的客戶端電腦和客戶端應用程式進行驗證。

在進行驗證之前,兩台通訊電腦必須同意都可以支援的協定。 要透過 SSPI 使用任何協定,每台電腦都必須具有適當的 SSP。 例如,若要讓客戶端電腦和伺服器使用 Kerberos 驗證協定,則必須同時支援 Kerberos v5。 Windows Server 使用 EnumerateSecurityPackages 函數,識別電腦上支援的 SSP 以及這些 SSP 的功能。

可選擇驗證協定時,可以使用下列兩種方式之一來處理:

  1. 單一驗證通訊協定

  2. 交涉選項

單一驗證通訊協定

在伺服器上指定單一可接受協定時,客戶端電腦必須支援指定的協定,否則通訊會失敗。 指定單一可接受的協定時,驗證交換會按下列方式進行:

  1. 客戶端電腦要求存取服務。

  2. 伺服器會回覆要求,並指定要使用的協定。

  3. 客戶端電腦檢查回覆的內容並檢查以確定它是否支援指定的協定。 如果客戶端電腦確實支援指定的協定,驗證會繼續。 如果客戶端電腦不支援該協定,則無論客戶端電腦是否被授權存取該資源,驗證都會失敗。

Negotiate 選項

協商選項可用於允許客戶端和伺服器嘗試查詢可接受的協定。 這是基於 Simple 和 Protected GSS-API Negotiate Mechanism (SPNEGO)。 當驗證以協商驗證協定的選項開始時,發生的 SPNEGO 交換如下:

  1. 客戶端電腦要求存取服務。

  2. 伺服器會以可支援的驗證協定清單,以及根據偏好的協定,進行驗證質詢或回應。 例如,伺服器可能會列出 Kerberos 通訊協定和 NTLM,並傳送 Kerberos 驗證回應。

  3. 客戶端電腦檢查回覆的內容並檢查以確定是否支援任何指定的協定。

    • 若客戶端電腦支援偏好的協定,驗證就會繼續進行。

    • 若客戶端電腦不支援偏好的協定,但是支援伺服器列出的其他協定之一,則客戶端電腦讓伺服器知道支援哪些驗證協定,然後進行驗證。

    • 若客戶端電腦不支援任何列出的協定,驗證交換就會失敗。

其他參考

Windows 驗證架構