ident 认证方法通过从一个 ident 服务器获得客户端的操作系统用户名并且用它作为被允许的数据库用户名(和可选的用户名映射)来工作。它只在 TCP/IP 连接上支持。
当为一个本地(非 TCP/IP)连接指定 ident 时,将实际使用 peer 认证(见Section 20.9)。
ident 支持下列配置选项:
map #允许在系统用户和数据库用户名称之间进行映射。详细信息请参见Section 20.2。
“标识协议”在 RFC 1413中有描述。 几乎每个类Unix的操作系统都默认安装了一个ident服务器,监听TCP 端口113。ident服务器的基本功能是回答类似于“哪个用户发起了 从你的端口X到我的端口Y的连接?”这样的问题。 由于PostgreSQL在建立物理连接时知道X和 Y,它可以查询连接客户端主机上的ident服务器, 理论上可以确定任何给定连接的操作系统用户。
这个过程的缺点在于它依赖客户端本身的可信性:如果客户端机器不可信或者已被攻破,攻击者几乎可以在 113 端口上运行任何程序,并返回任意他们选择的用户名。因此,这种认证方法只适用于封闭网络,在这类网络中每台客户端机器都受到严格控制,而且数据库管理员与系统管理员之间保持密切协作。换句话说,你必须信任运行 ident 服务器的那台机器。请注意下面的警告:
|
标识协议的本意不是作为一种认证或访问控制协议。 |
||
| --RFC 1413 | ||
有些 ident 服务器提供了一个非标准选项,会让返回的用户名被加密,而解密所需密钥只有发起连接机器的管理员才知道。将 ident 服务器与 PostgreSQL 配合使用时,绝不能启用这个选项,因为 PostgreSQL 无法解密返回的字符串,也就无法确定实际用户名。
如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。