# 21.8.身份验证

ident身份验证方法的工作原理是从ident服务器获取客户端的操作系统用户名,并将其用作允许的数据库用户名(带有可选的用户名映射)。这仅在TCP/IP连接上受支持。

# 笔记

当为本地(非TCP/IP)连接指定ident时,对等身份验证(请参阅第21.9节)将改为使用。

ident支持以下配置选项:

地图

允许在系统和数据库用户名之间进行映射。看见第21.2节详细信息。

“识别协议”如所述RFC 1413 (opens new window)几乎每一个类Unix的操作系统都附带一个默认监听TCP端口113的ident服务器。ident服务器的基本功能是回答诸如“哪个用户发起了从您的端口出去的连接”之类的问题*十、并连接到我的端口Y?”. 因为PostgreSQL两者都知道十、Y*当建立物理连接时,它可以询问连接客户端主机上的Identit server,并从理论上确定任何给定连接的操作系统用户。

此过程的缺点是,它取决于客户端的完整性:如果客户端计算机不受信任或受到攻击,攻击者可以在端口113上运行几乎任何程序,并返回他们选择的任何用户名。因此,这种身份验证方法仅适用于每个客户机都受到严格控制且数据库和系统管理员密切联系的封闭网络。换句话说,您必须信任运行ident服务器的机器。注意警告:

身份识别协议不是授权或访问控制协议。
--RFC 1413

一些ident服务器有一个非标准选项,该选项会导致使用只有原始计算机管理员知道的密钥对返回的用户名进行加密。这个选项不能在将Identit server与PostgreSQL一起使用时使用,因为PostgreSQL无法解密返回的字符串以确定实际用户名。