受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: devel

20.7. SSPI 认证 #

SSPI 是一种用于安全认证和单点登录的 Windows 技术。 PostgreSQL 将在 negotiate 模式下使用 SSPI, 该模式会在可能时使用 Kerberos,并在其他情况下自动回退到 NTLMSSPIGSSAPI 作为客户端和服务器是可互操作的, 例如,SSPI 客户端可以向 GSSAPI 服务器完成认证。 建议在 Windows 客户端和服务器上使用 SSPI,在非 Windows 平台上使用 GSSAPI

当使用Kerberos认证时,SSPIGSSAPI的工作方式相同,详见Section 20.6

SSPI 支持下列配置选项:

include_realm #

如果设为 0,则在通过用户名映射(Section 20.2)之前,会先从已认证用户的主体名中去掉 realm 名称。不建议这样做;它主要是为了向后兼容而保留的,因为在多 realm 环境中这并不安全,除非同时使用了 krb_realm。建议将 include_realm 保持为默认值(1),并在 pg_ident.conf 中提供显式映射,把主体名转换成 PostgreSQL 用户名。

compat_realm #

如果设为 1,则会在 include_realm 选项中使用域的 SAM 兼容名称(也称为 NetBIOS 名称)。这是默认值。如果设为 0,则会使用 Kerberos 用户主体名中的真实 realm 名称。

不要禁用这个选项,除非你的服务器运行在一个域账号(这包括一个域成员系统上的虚拟服务账号)下并且所有通过 SSPI 认证的所有客户端也在使用域账号,否则认证将会失败。

upn_username #

如果此选项与 compat_realm 一起启用,则认证时会使用 Kerberos UPN 中的用户名。如果禁用它(默认值),则使用 SAM 兼容用户名。默认情况下,对新建用户账号而言,这两个名称是相同的。

注意,如果没有显式指定用户名,libpq 会使用 SAM 兼容名称。如果你使用的是 libpq 或基于它的驱动,应当保持该选项为禁用状态,或者在连接字符串中显式指定用户名。

map #

允许在系统用户名和数据库用户名之间进行映射。详见 Section 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 的用户连接,但仍受已执行的用户名映射约束。

提交更正

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