我已根据以下内容将 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 代理来说则不然,因为 OpenLDAP 代理会在连接时抛出错误:
conn=1002 op=1 do_bind: invalid dn ([email protected])
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
我尝试使用 rwm 覆盖中的 rwm-rewriteRule 重写 userPrincipalName 的 bindDN。这没有用,尽管它可以与标准 bind 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=employees,dc=example,dc=com" ":"
有没有办法重写 bindDN[电子邮件保护]绑定 DN 吗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
答案1
您可以使用以下方式重写 bind-DNslapo-rwm但那些必须是 DN。
因此,您可以通过使用过滤器搜索条目来将短 DN 重写[email protected]
为。uid=user,dc=example,dc=com
([email protected])
但要重写的短格式必须是有效的 DN 字符串表示,如RFC 4514而不仅仅是[email protected]
像 MS AD 那样的用户主体名称。
参见示例slapo-rwm(5)。