Active-Directory

OpenLDAP 作為 Active Directory 的代理不與來自 slapd.conf 的 bindDN 綁定

  • September 30, 2016

背景資料:

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(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, 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.

引用自:https://serverfault.com/questions/805441