支援的版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 11

20.7. SSPI 驗證 #

SSPI 是一種 Windows 技術,用於透過單一登入進行安全驗證。PostgreSQL 將在 negotiate 模式中使用 SSPI,這將在可能的情況下使用 Kerberos,並在其他情況下自動回退到 NTLMSSPIGSSAPI 可以作為客戶端和伺服器互通,例如,SSPI 客戶端可以驗證到 GSSAPI 伺服器。建議在 Windows 客戶端和伺服器上使用 SSPI,在非 Windows 平台上使用 GSSAPI

當使用 Kerberos 驗證時,SSPI 的工作方式與 GSSAPI 相同;有關詳細信息,請參閱第 20.6 節

以下配置選項受 SSPI 支援:

include_realm

如果設定為 0,則在通過使用者名稱映射 (第 20.2 節) 傳遞時,會剝離已驗證使用者主體的 realm 名稱。不建議這樣做,並且主要用於向後相容性,因為在多 realm 環境中,除非也使用 krb_realm,否則它是不安全的。建議將 include_realm 設定為預設值 (1),並在 pg_ident.conf 中提供明確的映射,以將主體名稱轉換為 PostgreSQL 使用者名稱。

compat_realm

如果設定為 1,則網域的 SAM 相容名稱(也稱為 NetBIOS 名稱)將用於 include_realm 選項。這是預設值。 如果設定為 0,則使用 Kerberos 使用者主體名稱中的真實 realm 名稱。

除非您的伺服器在網域帳戶下執行(包括網域成員系統上的虛擬服務帳戶),並且所有透過 SSPI 驗證的客戶端也使用網域帳戶,否則請勿停用此選項,否則驗證將失敗。

upn_username

如果啟用此選項以及 compat_realm,則 Kerberos UPN 中的使用者名稱將用於驗證。 如果停用(預設值),則使用 SAM 相容的使用者名稱。 預設情況下,對於新的使用者帳戶,這兩個名稱是相同的。

請注意,如果未指定明確的使用者名稱,libpq 會使用 SAM 相容的名稱。 如果您使用 libpq 或基於它的驅動程式,則應保持此選項停用狀態,或在連線字串中明確指定使用者名稱。

map

允許系統和資料庫使用者名稱之間的映射。 有關詳細信息,請參閱第 20.2 節。 對於 SSPI/Kerberos 主體,例如 username@EXAMPLE.COM(或較少見的 username/hostbased@EXAMPLE.COM),用於映射的使用者名稱是 username@EXAMPLE.COM(或分別為 username/hostbased@EXAMPLE.COM),除非 include_realm 已設定為 0,在這種情況下,username(或 username/hostbased)是在映射時看到為系統使用者名稱的。

krb_realm

設定 realm 以比對使用者主體名稱。如果設定了此參數,則只會接受該 realm 的使用者。 如果未設定,則任何 realm 的使用者都可以連線,但須遵守所做的任何使用者名稱映射。

提交更正

如果您在文件中看到任何不正確、與特定功能不符或需要進一步澄清的内容,請使用此表單來報告文件問題。