sspi
使用 SSPI 认证用户,仅适用于 Windows。详情参见第 20.7 节。
当前查看 PostgreSQL 18.6。
说明
使用 SSPI 认证用户,仅适用于 Windows。详情参见第 20.7 节。
- 方法
- sspi
- 配置
- pg_hba.conf
- 清单
- 用户可见的源码认证方法
手册中的方法选项与替代方式
| 选项或术语 | 含义 |
|---|---|
| include_realm | 如果设为 0,则在通过用户名映射( 第 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 | 允许在系统用户名和数据库用户名之间进行映射。详见 第 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 的用户连接,但仍受已执行的用户名映射约束。 |
手册定义
20.7. SSPI 认证
20.7. SSPI 认证
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 节)之前,会先从已认证用户的主体名中去掉 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-
允许在系统用户名和数据库用户名之间进行映射。详见第 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 的用户连接,但仍受已执行的用户名映射约束。
文档与源码
来源构建
- 版本
- 18.6
- 构建
- https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2
- 来源指纹
555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f
版本比较
PostgreSQL 17 → 18: 无变化。
比较已记录的接口与属性,排除来源指纹和构建元数据。某个样本中没有记录,不能据此判断实际引入或移除的版本。
相关条目
导出 JSON · 返回认证方法 · 收录范围为 PostgreSQL 10 至 20;最早采样版本不一定是实际引入版本。