在使用某些外部统一身份认证系统(如 GSSAPI、SSPI、Ident、LDAP 或客户端 SSL 证书)时,外部凭据中携带的身份名称(例如操作系统的本地用户短名,或 Kerberos 主体名称 username@EXAMPLE.COM)往往与 PostgreSQL 内部的数据库角色名称存在格式差异。
通过在数据目录下的映射配置文件 pg_ident.conf 中定义映射规则,能够将外部身份无缝映射为数据库的内部角色:
# MAPNAME SYSTEM-USERNAME PG-USERNAME mymap bryanh bryan mymap /^([a-z]+)@EXAMPLE\.COM$ \1
在 pg_hba.conf 的认证规则选项中附加 map=mymap 即可激活该映射转换。
Example 20.2. pg_ident.conf 映射配置示例
# MAPNAME SYSTEM-USERNAME PG-USERNAME mymap bryanh bryan mymap ann ann mymap /^(.*)@example\.com$ \1