我们希望使用OpenLDAP代理我们拥有的多个客户LDAP服务器,例如Linux和Windows AD等中的普通LDAP。由于代理了多个LDAP服务器,我们还需要一对多的属性映射。所以在slapd.conf
文件中,我们定义了rwm overlay部分,如下所示。
overlay rwm
rwm-map attribute lastName sAMAccountName
overlay rwm
rwm-map attribute email emailAddress
rwm-map attribute mobileNumber mobile
rwm-map attribute lastName sn
rwm-map attribute uid uid
rwm-map attribute firstName givenName
rwm-map objectClass inetOrgPerson person
请注意lastName
如何映射到sn
和sAMAccountName
。我理解lastName
或mobileNumber
之类的条目不是合法的LDAP属性,在模式中定义了有效的OID。这就是启动slapd时出现以下警告的原因。但是,让我们暂时离开它。
5a71c27c /etc/openldap/slapd.conf: line 125: warning, source attributeType 'lastName' should be defined in schema
代理本身有效。我们可以使用它来查询用户并获取所有可用的属性。映射也可以成功完成。
但奇怪的是,如果我们在ldapsearch
调用中指定映射属性,如下所示,那些属性将无法成功检索。
ldapsearch -h localhost -x -b "dc=local,dc=foo,dc=bar,dc=com" "mail=someone@foo.bar.com" lastname firstname mobilenumber
输出中仅显示dn
属性。如果我们从LDAP服务器添加一个默认属性。所有这些都可以成功检索。
ldapsearch -h localhost -x -b "dc=local,dc=foo,dc=bar,dc=com" "mail=someone@foo.bar.com" lastname firstname mobilenumber notesemail
我们对OpenLDAP了解不多。只想先让这个代理工作。所以想知道以上配置是否是有效的试用版。
答案 0 :(得分:0)
您正在搜索过滤器中将外部属性命名为本地服务器。它并不了解它们,因为它们已被映射。您需要使用映射的名称,例如givenName
。
答案 1 :(得分:0)
最终我发现诀窍是根本不使用rwm overlay
。相反,只需在map
指令后使用uri
语句即可。所以在数据库声明部分,而不是
database meta
suffix "dc=foo,dc=bar,dc=com"
rootdn "cn=admin,dc=foo,dc=bar,dc=com"
rootpw "p@ssw0rd"
uri "ldaps://tstbluepages.mkm.can.ibm.com:636/dc=foo,dc=bar,dc=com"
lastmod off
readonly yes
suffixmassage "dc=foo,dc=bar,dc=com" "ou=bluepages,o=ibm.com"
uri "ldaps://<AD_HOSTNAME>:636/dc=local,dc=foo,dc=bar,dc=com"
lastmod off
readonly yes
suffixmassage "dc=foo,dc=bar,dc=com" "dc=testad,dc=ibm,dc=com"
overlay rwm
rwm-map attribute lastName sAMAccountName
overlay rwm
rwm-map attribute email emailAddress
rwm-map attribute mobileNumber mobile
rwm-map attribute lastName sn
rwm-map attribute uid uid
rwm-map attribute firstName givenName
rwm-map objectClass inetOrgPerson person
现在slapd.conf
文件位于以下部分。
database meta
suffix "dc=foo,dc=bar,dc=com"
rootdn "cn=admin,dc=foo,dc=bar,dc=com"
rootpw "p@ssw0rd"
uri "ldaps://tstbluepages.mkm.can.ibm.com:636/dc=foo,dc=bar,dc=com"
lastmod off
readonly yes
suffixmassage "dc=foo,dc=bar,dc=com" "ou=bluepages,o=ibm.com"
map attribute mobileNumber mobile
map attribute email emailAddress
map attribute lastName sn
map attribute firstName givenName
map objectClass inetOrgPerson person
uri "ldaps://<AD_HOSTNAME>:636/dc=foo,dc=bar,dc=com"
lastmod off
readonly yes
suffixmassage "dc=foo,dc=bar,dc=com" "dc=testad,dc=ibm,dc=com"
map attribute lastName sAMAccountName
我知道slapd-ldap联机帮助页指出map
指令的功能已委托给rwm overlay
,但slapd-meta联机帮助页仍然有map
列出的指令,它的工作原理。
这很好地实现了我们最初的目的,即将来自多个后端LDAP服务器的不同属性映射为统一的。