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”身份登录,要么以该用户身份成功登录,要么以该用户身份登录失败。它不会选择不同的名称来登录。
您需要修复您的客户端连接代码(您没有显示),以便它尝试使用正确的拼写登录。
我使用 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”身份登录,要么以该用户身份成功登录,要么以该用户身份登录失败。它不会选择不同的名称来登录。
您需要修复您的客户端连接代码(您没有显示),以便它尝试使用正确的拼写登录。