2014-01-27 87 views
5

我很新到PostgreSQL,具有与MS SQL Server体验了相当数量。引起我注意的是PostgreSQL的一个特点是SSPI认证,我希望它能够使MS SQL的过渡更加容易。但是,我似乎无法让它工作。PostgreSQL的SSPI认证 - FATAL:2801:密码验证失败的用户“XXX”

现在,服务器和客户端是相同的Windows 7的机器,这是不是一个域的成员上运行。如果我理解正确的话,SSPI权威性回落与Kerberos到NTLM,所以应该没有域的工作 - 是吗?

当我尝试连接(通过Npgsql从一个.NET应用程序),我得到一个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;Port=5432;Database=mydb;Integrated Security=true;

我在做什么错在这里?还是它没有域名就无法正常工作?

回答

4

好,知道了。 我无法同时允许MD5和SSPI身份验证。因此,无论如何,没有“落后”机制 - 只有第一个匹配请求的认证方法被尝试。因此,所有剩下要做的就是从pg_hba.conf除去前两行,并创建一个具有相同名称作为我的Windows登录作用。什么是窃听我是什么显然是一个配置错误时将被忽略,甚至没有在日志中的警告 - 没有任何理由的背后呢?

+0

好吧,我应该只有RTFM:http://www.postgresql.org/docs/9.3/static/auth-pg-hba-conf.html:“没有”跌落“或”备份“ :如果选择一条记录并且认证失败,则不考虑后续记录,如果没有记录匹配,则拒绝访问。“ – chris

相关问题