OpenLDAP 作为 Active Directory 的代理未与 slapd.conf 中的 bindDN 绑定

OpenLDAP 作为 Active Directory 的代理未与 slapd.conf 中的 bindDN 绑定

背景信息:

CentOS 7 3.10.0-327.18.2.el7.x86_64

该服务器将用作 Active Directory 的代理。

目前似乎并不ldapsearch关心 /etc/openldap/slapd.conf 并且不会绑定,除非我直接使用 -D 和 -w 传递 bindDN 和密码。

我全新安装了 OpenLDAP 服务器

编辑 slapd.conf 如下:

### Schema includes ###########################################################
include                 /etc/openldap/schema/core.schema
include                 /etc/openldap/schema/cosine.schema
include                 /etc/openldap/schema/inetorgperson.schema
include                 /etc/openldap/schema/misc.schema
include                 /etc/openldap/schema/nis.schema

## Module paths ##############################################################
modulepath              /usr/lib64/openldap/
moduleload              back_ldap
moduleload              rwm

## Support both LDAPv2 and LDAPv3
allow           bind_v2

# Main settings ###############################################################
pidfile                 /var/run/openldap/slapd.pid
argsfile                /var/run/openldap/slapd.args

### Database definition (Proxy to AD) #########################################
database                ldap
readonly                yes
protocol-version        3
rebind-as-user          yes
uri                     "ldap://10.0.0.90:389"
suffix                  "DC=secretdomain,DC=com"
idassert-bind           bindmethod=simple
                        binddn="CN=MropenLDAP,OU=Administration,DC=secretdomain,DC=com"
                        credentials=topsecretpass
                        mode=none
idassert-authzFrom      "*"
overlay                 rwm
rwm-map                 attribute       uid     sAMAccountName
rwm-map                 attribute       mail    proxyAddresses

### Logging ###################################################################
logfile                 /var/log/slapd/slapd.log
loglevel                1

冉:slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/

确保所有权和权限正确然后重新启动 slapd。

以下操作无效:

ldapsearch -H ldap://10.0.0.90 -x -b "OU=Administration,DC=secretdomain,DC=com" -v -LLL "(samaccountname=someusername)"

ldapsearch -H ldap://10.0.0.90 -x -b "OU=Administration,DC=secretdomain,DC=com" -v -LLL

它给了我这个错误:

ldap_initialize( ldap://10.0.0.90:389/??base )
filter: (objectclass=*)
requesting: All userApplication attributes
Operations error (1)
Additional information: 000004DC: LdapErr: DSID-0C0906E8, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v1db1

但是,当我直接传递绑定帐户 DN 时,它可以工作。我从 /etc/openldap/slapd.conf 文件中检查了这两条信息是否相同:

ldapsearch -H ldap://10.0.0.90 -x -b "OU=Administration,DC=secretdomain,DC=com" -v -LLL -D "CN=MropenLDAP,OU=Administration,DC=secretdomain,DC=com" "(samaccountname=someusername)" -w topsecretpass

答案1

ldapsearch不使用slapd.confldap.conf(或如下所述的其他一些地方)。Binddn无法在全局 ldap.conf 文件中进行设置,因为它被视为仅限用户的选项,因此如果在那里发现它会被忽略。


LDAP.CONF(5)

名称
ldap.conf、.ldaprc - LDAP 配置文件/环境变量

概要
/etc/openldap/ldap.conf、ldaprc、.ldaprc、$LDAP

描述
如果定义了环境变量 LDAPNOINIT,则所有默认值都将被禁用。

ldap.conf 配置文件用于设置运行 ldap 客户端时应用的系统范围的默认值。

用户可以在其主目录中创建一个可选配置文件 ldaprc 或 .ldaprc,该文件将用于覆盖系统范围的默认文件。当前工作目录中的文件 ldaprc 也会被使用。

可以使用 LDAPCONF 和 LDAPRC 环境变量指定其他配置文件。LDAPCONF 可以设置为配置文件的路径。此路径可以是绝对路径,也可以是相对于当前工作目录的路径。如果定义了 LDAPRC,则应为当前工作目录或用户主目录中文件的基本名称。

环境变量也可用于增强基于文件的默认值。变量的名称是选项名称加上 LDAP 前缀。例如,要通过环境定义 BASE,请将变量 LDAPBASE 设置为所需的值。

有些选项是用户专用的。如果这些选项存在于 ldap.conf(或 LDAPCONF 指定的文件中),则会被忽略。

因此,按顺序读取以下文件和变量:
变量 $LDAPNOINIT,如果未设置:
系统文件 /etc/openldap/ldap.conf、
用户文件 $HOME/ldaprc、$HOME/.ldaprc、./ldaprc、
系统文件 $LDAPCONF、
用户文件 $HOME/$LDAPRC、$HOME/.$LDAPRC、./$LDAPRC、
变量 $LDAP。
列表中较晚的设置将覆盖较早的设置。

BINDDN <dn>
指定执行 ldap 操作时要使用的默认绑定 DN。绑定 DN 必须以 LDAP 格式指定为可分辨名称。 This is a user-only option.

相关内容