我正在尝试使用 Postgres 设置 LDAP 身份验证。 我的数据库中有一个与 AD 中同名的用户,并且 pg_hba.conf 中有以下字符串:
托管所有 myusername 0.0.0.0/0 ldap ldapserver=ldap.server.address ldapport=10636 ldapprefix=""ldapsuffix="@domain.com"ldapscheme=ldaps
可从 postgres 服务器访问 LDAP 服务器。 LDAP 服务已启动并监听端口 10636 我可以使用此用户名/密码登录与 AD 集成的其他服务。
但是当我连接到数据库时出现错误:
用户未经过身份验证 (LDAP)
我做错了什么?
最佳答案
我正在考虑在哪里留下有关如何在 PostgreSQL 中配置 LDAP 的注释。
这真是个好地方! :)
注意 - ldap 方法没有 map
属性,因此您无法通过 pg_ident.conf
文件进行比较
您需要在 pg_hba.conf 文件中配置身份验证,如下所示:
# TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 ldap ldapserver=mydomain.local ldapport=389 ldaptls=1 ldapprefix=""
或
# TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 ldap ldapserver=mydomain.local ldapport=636 ldapprefix=""
创建用户时需要使用与 UPN 名称完全匹配的用户!
CREATE ROLE "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a1cad4cde1ccd8c5ceccc0c8cf8fcdcec2c0cd" rel="noreferrer noopener nofollow">[email protected]</a>" WITH SUPERUSER LOGIN;
连接时,请使用完整的 UPN 名称格式!
psql -h 127.0.0.1 -U "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="3d5648517d50445952505c54531351525e5c51" rel="noreferrer noopener nofollow">[email protected]</a>" -W postgres
关于postgresql - Postgres LDAP 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69377231/