SSPI 是一項 Windows 技術,用於進行安全的單點登入認證。 PostgreSQL 將以 negotiate
模式使用 SSPI,該模式在可能的情況下使用 Kerberos,並在其他情況下自動回退到 NTLM。 SSPI 和 GSSAPI 可以作為客戶端和伺服器進行互操作,例如,一個 SSPI 客戶端可以認證到一個 GSSAPI 伺服器。建議在 Windows 客戶端和伺服器上使用 SSPI,在非 Windows 平臺上使用 GSSAPI。
使用 Kerberos 認證時,SSPI 的工作方式與 GSSAPI 相同;有關詳細資訊,請參閱 第 20.6 節。
SSPI 支援以下配置選項:
include_realm
如果設定為 0,則在將認證使用者的主體名稱傳遞給使用者名稱對映(第 20.2 節)之前,會將其中的領域名稱剝離。不推薦這樣做,並且主要是為了向後相容,因為它在多領域環境中不安全,除非同時使用了 krb_realm
。建議將 include_realm
保留為預設值 (1),並在 pg_ident.conf
中提供顯式對映,以將主體名稱轉換為 PostgreSQL 使用者名稱。
compat_realm
如果設定為 1,則域的 SAM 相容名稱(也稱為 NetBIOS 名稱)將用於 include_realm
選項。這是預設設定。如果設定為 0,則將使用 Kerberos 使用者主體名稱中的實際領域名稱。
除非您的伺服器執行在域賬戶下(包括域成員系統上的虛擬服務賬戶)並且所有透過 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
設定用於匹配使用者主體名稱的領域。如果設定了此引數,則只接受該領域的使用者。如果未設定,則可以連線任何領域的使用者,具體取決於所做的任何使用者名稱對映。
如果您在文件中看到任何不正確、與您對特定功能的實際體驗不符或需要進一步澄清的內容,請使用 此表單 報告文件問題。