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 主体,例如 username@EXAMPLE.COM
(或不太常见的 username/hostbased@EXAMPLE.COM
),用于映射的用户名为 username@EXAMPLE.COM
(或 username/hostbased@EXAMPLE.COM
),除非 include_realm
已设置为 0,在这种情况下,username
(或 username/hostbased
)是在映射时看到的系统用户名。
krb_realm
设置用于匹配用户主体名称的领域。如果设置了此参数,则只接受该领域的用户。如果未设置,则可以连接任何领域的用户,具体取决于所做的任何用户名映射。
如果您在文档中看到任何不正确、与您对特定功能的实际体验不符或需要进一步澄清的内容,请使用 此表单 报告文档问题。