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
设置与用户主体名称匹配的域。如果设置了此参数,则只会接受该域的用户。如果未设置,则可以连接任何域的用户,但需要进行用户名映射。
如果您在文档中发现任何不正确、与您在特定功能方面的体验不符或需要进一步澄清的地方,请使用此表单来报告文档问题。