Ident 认证方法通过从 ident 服务器获取客户端的操作系统用户名,并将其用作允许的数据库用户名(可选择用户名映射),来实现认证。此方法仅支持 TCP/IP 连接。
如果为本地(非 TCP/IP)连接指定 ident,则将使用对等认证(请参阅第 21.9 节)来代替。
对于 ident
,支持以下配置选项
map
允许在系统和数据库用户名之间进行映射。有关详细信息,请参阅第 21.2 节。
“识别协议”在 RFC 1413 中进行了描述。几乎每个类 Unix 操作系统都附带一个 ident 服务器,默认情况下侦听 TCP 端口 113。ident 服务器的基本功能是回答诸如“哪个用户发起了从端口 X
发出并连接到我的端口 Y
的连接?”之类的询问。由于 PostgreSQL 在建立物理连接时同时知道 X
和 Y
,因此它可以在连接客户端的主机上查询 ident 服务器,并且理论上可以确定任何给定连接的操作系统用户。
此过程的缺点在于它依赖于客户端的完整性:如果客户端计算机不受信任或遭到入侵,攻击者可以在端口 113 上运行几乎任何程序并返回他们选择的任何用户名。因此,此身份验证方法仅适用于每个客户端计算机都受到严格控制且数据库和系统管理员密切配合的封闭网络。换句话说,您必须信任运行 ident 服务器的计算机。请注意警告
识别协议并非旨在作为授权或访问控制协议。 |
||
--RFC 1413 |
一些 ident 服务器具有一个非标准选项,该选项会导致返回的用户名使用仅原始计算机的管理员知道的密钥进行加密。在将 ident 服务器与 PostgreSQL 一起使用时,不得 使用此选项,因为 PostgreSQL 没有办法解密返回的字符串来确定实际的用户名。