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 主体,例如 [email protected]
(或不太常见的 username/[email protected]
),用于映射的用户名为 [email protected]
(或分别为 username/[email protected]
),除非 include_realm
设置为 0,在这种情况下,username
(或 username/hostbased
)是在映射时作为系统用户名看到的。
krb_realm
设置域以与用户主体名称进行匹配。如果设置此参数,则仅接受该域的用户。如果没有设置,则任何域的用户都可以连接,这取决于执行的用户名映射。
如果您在文档中看到任何不正确的内容,与您对特定功能的体验不符,或者需要进一步说明,请使用 此表格 报告文档问题。