搭配 SQL Server 使用 Kerberos 驗證
若要搭配 SQL Server 使用 Kerberos 驗證,需要符合下列兩個條件:
用戶端和伺服器電腦必須屬於相同的 Windows 網域,或在受信任的網域中。
必須向 Active Directory 登錄「服務主要名稱」(SPN),而 Active Directory 的角色如同 Windows 網域中的「金鑰發佈中心」。登錄後的 SPN 會對應至啟動 SQL Server 執行個體服務的 Windows 帳戶。如果尚未執行 SPN 註冊或註冊作業失敗,則 Windows 安全層無法判斷與 SPN 相關聯的帳戶,因此不會使用 Kerberos 驗證。
[!附註]
如果伺服器無法自動註冊 SPN,則必須手動註冊 SPN。
您可以透過查詢 sys.dm_exec_connections 動態管理檢視,驗證連接是否使用 Kerberos。請執行下列查詢並檢查 auth_scheme column 的值 (如果有啟用 Kerberos,該值將為 "KERBEROS")。
SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@spid ;
SPN 在驗證中的角色
當應用程式開啟連接並使用「Windows 驗證」時,SQL Server Native Client 會通過 SQL Server 伺服器名稱、執行個體名稱及選擇性地通過 SPN。如果連接通過 SPN,則會在不進行任何變更的情況下使用該 SPN。
如果連接未通過 SPN,則會根據使用的通訊協定、伺服器名稱和執行個體名稱建構預設的 SPN。
在前述兩種狀況中,SPN 都會傳送到「金鑰散佈中心」,以取得安全性 Token 來驗證連接。如果無法取得安全性 Token,則驗證會使用 NTLM。