支持的版本: 当前 (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 节)传递之前,将删除经过身份验证的用户主体中的领域名称。不建议这样做,并且主要用于向后兼容,因为在多领域环境中,除非也使用 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

设置要与之匹配用户主体名称的领域。如果设置此参数,则只接受该领域的用户。如果未设置,则任何领域的用户都可以连接,但要受到所完成的任何用户名映射的约束。

提交更正

如果您发现文档中任何不正确的内容、与您使用特定功能的经验不符或需要进一步澄清的内容,请使用此表单报告文档问题。