PostgreSQL SSPI身份验证-致命:2801:用户的密码身份验证失败;xxx“;
我是PostgreSQL的新手,对MS SQL Server有相当多的经验。PostgreSQL的一个吸引我注意的特性是SSPI身份验证,我希望它能使从MS SQL的转换更容易。然而,我似乎无法让它发挥作用 目前,服务器和客户端都运行在同一台Windows 7计算机上,该计算机不是域的成员。如果我理解正确,SSPI auth会从Kerberos返回到NTLM,因此它应该在没有域的情况下工作-对吗 当我尝试连接(通过Npgsql从.NET应用程序连接)时,我收到一条PostgreSQL SSPI身份验证-致命:2801:用户的密码身份验证失败;xxx“;,sql,postgresql,authentication,npgsql,Sql,Postgresql,Authentication,Npgsql,我是PostgreSQL的新手,对MS SQL Server有相当多的经验。PostgreSQL的一个吸引我注意的特性是SSPI身份验证,我希望它能使从MS SQL的转换更容易。然而,我似乎无法让它发挥作用 目前,服务器和客户端都运行在同一台Windows 7计算机上,该计算机不是域的成员。如果我理解正确,SSPI auth会从Kerberos返回到NTLM,因此它应该在没有域的情况下工作-对吗 当我尝试连接(通过Npgsql从.NET应用程序连接)时,我收到一条NpgsqlException消
NpgsqlException
消息:Fatal:28P01:password authentication failed for user“xxx”
这条消息让我有点困惑,因为我没有使用密码验证
我的pg_hba.conf
:
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
host all all 127.0.0.1/32 sspi
Npgsql连接字符串:
Server=127.0.0.1;端口=5432;数据库=mydb;综合安全=真实代码>
我做错了什么?还是说没有域它就不能工作?好的,明白了。我不能同时允许MD5和SSPI身份验证。因此,不管怎样,没有“失败”机制-只尝试与请求匹配的第一个身份验证方法。所以剩下要做的就是从pg_hba.conf
中删除前两行,并创建一个与我的Windows登录名同名的角色。让我感到不安的是,显然是配置错误的内容被悄悄地忽略了,甚至日志中没有警告-这背后有什么原因吗?好的,我应该只使用RTFM::“没有“故障”或“备份”“:如果选择了一条记录,但身份验证失败,则不考虑后续记录。如果没有匹配的记录,访问将被拒绝。“