gpt4 book ai didi

Postgresql - 针对 Active Directory (AD) 的 LDAP 身份验证 - 来自 linux 服务器的问题,而来自 windows 服务器的正常

转载 作者:行者123 更新时间:2023-11-29 11:37:25 24 4
gpt4 key购买 nike

编辑

我在我的 WINDOWS 笔记本电脑上安装的 postgresql 上放置了相同的 pg_hba 规则,它可以工作......所以我更改了标题:如何让我的 linux 服务器像 Windows Pg 服务器一样使用 AD 验证用户?

/编辑

我需要使用我们的 Active Directory 服务器对 postgresql 数据库用户进行身份验证。我已经测试了很多配置,但到目前为止,我找不到为什么无法使用此身份验证方法对 postgresql 用户进行身份验证。

LDAP:事件目录/Postgresql:Postgresql 9.4

这是我使用的 pg_hba 规则:

host myDB myUser localhost ldap ldapserver="192.168.10.1" ldapbasedn="DC=companygroup,DC=priv" ldapbinddn="cn=LDAP - Lecture,ou=Users,ou=Specials Objects,dc=companygroup,dc=priv" ldapbindpasswd="ldapPassWord" ldapsearchattribute="sAMAccountName"

当使用此用户的正确密码登录“myUser”时,我在 postgresql 日志文件中有以下日志:

2015-11-18 10:01:50 CET [25991-1] [unknown]@[unknown] LOG: 00000: connection received: host=127.0.0.1 port=39074
2015-11-18 10:01:50 CET [25991-2] [unknown]@[unknown] LOCATION: BackendInitialize, postmaster.c:4003
2015-11-18 10:01:50 CET [25991-3] myUser@myDB LOG: 00000: could not search LDAP for filter "(sAMAccountName=myUser)" on server "192.168.10.1": Operations error
2015-11-18 10:01:50 CET [25991-4] myUser@myDB LOCATION: CheckLDAPAuth, auth.c:2030
2015-11-18 10:01:50 CET [25991-5] myUser@myDB FATAL: 28000: LDAP authentication failed for user "myUser"
2015-11-18 10:01:50 CET [25991-6] myUser@myDB DETAIL: Connection matched pg_hba.conf line 104: "host myDB myUser localhost ldap ldapserver="192.168.10.1" ldapbasedn="DC=companygroup,DC=priv" ldapbinddn="cn=LDAP - Lecture,ou=Users,ou=Specials Objects,dc=companygroup,dc=priv" ldapbindpasswd="ldapPassWord" ldapsearchattribute="sAMAccountName"

我看到如果我以某种方式更改 ldapbinddn 或 ldapbindpasswd,我会遇到另一个错误,如“无法为 ldapbinddn 执行初始 LDAP 绑定(bind)”...”。所以这些参数应该没问题。

“操作错误”不是很详细,所以我 tcpdump 了身份验证过程,这是我发现的。 Postgres 似乎执行了两个查询:

  • 首先通过搜索属性搜索用户。此操作似乎没问题,因为在 Active Directory 的响应中,我看到了与我的用户相关的信息。

  • 然后执行另一个查询。在这一个上,来自 LDAP 事件目录服务器的真实消息是:

    LdapErr:DSID-0C0906E8,注释:为了执行此操作,必须在连接上完成成功绑定(bind)。数据 0,v1db1

在第二个查询中,我看到 PG 似乎稍微改变了基本搜索 “DC=ForestDnsZones,DC=companygroup,dc=priv”而不是“DC=companygroup,DC=priv”

(我在 tcp 跟踪中看到了它:

LDAPMessage searchRequest(3) "DC=ForestDnsZones,DC=companygroup,dc=priv" wholeSubtree ...

)

当我尝试使用 Windows 软件“ldapbrowser”进行研究时,我能够通过一个简单的过滤器 (sAMAccountName=myUser) 找到我的帐户,搜索 DN DC=companygroup,DC=priv

我的理解正确吗?是否有可能仅仅因为可能更改了 basedn 而导致搜索不成功?还是我错过了其他东西?

最佳答案

根据您的日志,您对 ldapsearchattribute="sAMAccountName"的配置不起作用。

您可以使用 LDAP 工具(例如 LDAPAdmin 或 OpenLDAP)来测试您的过滤器。当您过滤下面的属性时,请确保以上返回结果

(sAMAccountName=myUser)

关于Postgresql - 针对 Active Directory (AD) 的 LDAP 身份验证 - 来自 linux 服务器的问题,而来自 windows 服务器的正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35480299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com