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
ldapsearch
不使用slapd.conf
它使用ldap.conf
(或下面概述的許多其他地方)。Binddn
不能在全域 ldap.conf 文件中有效地設置,因為它被認為是使用者專用選項,因此如果在那裡找到則忽略。名稱
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, and if that is not set: system file /etc/openldap/ldap.conf, user files $ 首頁/ldaprc, $ HOME/.ldaprc, ./ldaprc, system file $ LDAPCONF,
使用者文件 $ HOME/ $ LDAPRC, $ HOME/. $ LDAPRC,./ $ LDAPRC, variables $ LDAP。
列表後面的設置會覆蓋較早的設置。
BINDDN <dn>
指定執行 ldap 操作時要使用的預設綁定 DN。綁定 DN 必須指定為 LDAP 格式的專有名稱。
This is a user-only option.