Я установил OpenLDAP в качестве прокси-сервера AD в соответствии с: https://wiki.samba.org/index.php/OpenLDAP_as_proxy_to_AD
Все работает нормально для клиентов, использующих стандартный bindDN с полным атрибутом dn: (например, cn=jdoe,ou=users,dc=example,dc=com
)
Некоторые клиенты используют userPrincipalName в качестве bindDN, что вполне нормально с AD, но не с прокси OpenLDAP, который выдает ошибку при подключении:
conn=1002 op=1 do_bind: invalid dn (jdoe@example.com)
send_ldap_result: conn=1002 op=1 p=3
send_ldap_result: err=34 matched="" text="invalid DN"
send_ldap_response: msgid=2 tag=97 err=34
conn=1002 op=1 RESULT tag=97 err=34 text=invalid DN
Я попытался переписать bindDN userPrincipalName, используя rwm-rewriteRule из наложения rwm. Это не сработало, хотя оно работает со стандартными dn привязки (например, cn=jdoe,ou=users,dc=example,dc=com
)
Это не работает:
rwm-rewriteRule "(.+,)@example.com$" "cn=$1,ou=users,dc=example,dc=com" ":"
Это работает:
rewritin ou=users for ou=employees as a test:
rwm-rewriteRule "(. +,)? ou = users, dc = example, dc = com $" "$ 1ou = сотрудники, dc = example, dc = com" ":"
Есть ли способ переписать bindDN из jdoe@example.com в bindDN из cn=jdoe,ou=users,dc=example,dc=com
?
Вот моя текущая конфигурация:
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
modulepath /usr/lib64/openldap/
moduleload back_ldap
moduleload rwm
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
database ldap
readonly yes
protocol-version 3
rebind-as-user yes
uri "ldap://X.X.X.X:389"
suffix "dc=example,dc=com"
overlay rwm
rwm-rewriteEngine on
rwm-rewriteRule "(.+,)@example.com$" "cn=$1,ou=users,dc=example,dc=com" ":"
logfile /var/log/slapd/slapd.log
loglevel -1
TLSCACertificatePath /etc/openldap/certs
TLSCertificateFile "OpenLDAP Server"
TLSCertificateKeyFile /etc/openldap/certs/password
Это правильно, что вы можете переписать bind-DN с помощью slapo-rwm но это должны быть DN.
Чтобы вы могли переписать короткое DN uid=user@example.com
к uid=user,dc=example,dc=com
даже при поиске записи с фильтром (attr=user@example.com)
.
Но краткая форма, которую нужно переписать, должна быть допустимым строковым представлением DN, как определено в RFC 4514 а не только основное имя пользователя user@example.com
как с MS AD.
См. Примеры в slapo-rwm (5).