SSPI 映射 - 致命:角色不存在 - 案例问题

Map for SSPI - fatal: role does not exist - case issue

我使用 pg_ident.conf(PostgreSQL 12,OS Windows Server 2019)文件以这种方式为 SSPI 映射用户:

# MAPNAME       SYSTEM-USERNAME         PG-USERNAME
MapForSSPI      someone@COMPANY         someone

最近我不得不添加新用户,我做的和往常一样。我通过 pgAdmin 创建了角色“newsomeone”,正确添加了成员​​资格,并将用户添加到 pg_ident.conf 中:

MapForSSPI      newsomeone@COMPANY         newsomeone

但是当此用户尝试连接时:

FATAL:  role "NewSomeone" does not exist

请注意CASE。通过进一步测试,我意识到 OS 登录确实设置为 NewSomeone@COMPANY,但我真正不明白的是为什么这个大写字母的登录没有映射到我的小写登录“newsomeone”。当我通过 pgAdmin 创建新角色“NewSomeone”而不对 pg_ident.conf 进行任何更改时,连接成功。

在 pg_ident.conf 中以小写形式指定的 PG-USERNAME“newsomeone”怎么可能查找角色“NewSomeone”(如 OS 登录)?

当两者的拼写不匹配时,

pg_ident.conf 允许 system-authenticated 用户作为特定请求的数据库用户登录。没有将请求的数据库用户重写为不同的数据库用户。

只要您的客户端要求以数据库用户“NewSomeone”身份登录,要么以该用户身份成功登录,要么以该用户身份登录失败。它不会选择不同的名称来登录。

您需要修复您的客户端连接代码(您没有显示),以便它尝试使用正确的拼写登录。