问题描述
在Ubuntu 20上全新安装带有Apache 2.4.41的Bugzilla 5.0.6时,我想将域用户映射到我们现有的Bugzilla帐户。 (我们正在从早期版本的Bugzilla进行迁移,但在具有Windows的Apache上进行迁移,因此除了数据库迁移外,它几乎是一个新安装。)
为此,我跳过了Bugzilla的LDAP设置,转而将Apache集成与authnz一起使用,这是我们很久以前对原始设置所做的。 (公平地说,Windows上的Apache为此使用了另一个模块sspI)。我们还可以在其他服务器(例如Wiki)上使用此设置。我的LDAP设置如下:
<Location "/">
AuthName "Bugzilla user login (WHL user/pwd)"
AuthType Basic
AuthBasicProvider ldap
LDAPReferrals Off
# If desired add port 389 or 3268
AuthLDAPUrl ldap://ldapserver/dc=org1,dc=org2?sAMAccountName?sub?(objectClass=*)
AuthLDAPBindDN "CN=name,OU=accounts,DC=org1,DC=org2"
AuthLDAPBindPassword "xxxpwdxxx"
Require valid-user
</Location>
出于某些原因,我认为它即将开始工作
- ldap身份验证成功,但是Bugzilla显示错误:“我们收到的电子邮件地址([域登录名])没有通过我们对合法电子邮件地址[...]的语法检查”
- http请求的Wireshark跟踪显示在http标头中没有发送X-Remote-User
- Apache error.log具有如下条目:“ auth_ldap authenticate:将使用属性'userPrincipalName'设置REMOTE_USER,但是在用户的LDAP查询中未请求此属性。REMOTE_USER将回退到相应的用户名或DN。”
这将指向AuthLDAPUrl的问题,但是到目前为止,我发现的任何组合都没有用。寻找任何建议来解决此问题。
或者如果不是这样做,而首选方式是使用Bugzilla的ldap身份验证,请告诉我。
解决方法
因为我怀疑解决方案已经接近,但是由于这里不是马蹄铁或手榴弹,所以我们是。原来是这个字符串
AuthLDAPUrl ldap://ldapserver/dc=org1,dc=org2?sAMAccountName?sub?(objectClass=*)
需要额外的查找,这是相当重要的 userPrincipalName (电子邮件),la
AuthLDAPUrl ldap://ldapserver/dc=org1,dc=org2?sAMAccountName,userPrincipalName?sub?(objectClass=*)
此外,这一行
AuthLDAPRemoteUserAttribute userPrincipalName
指示Apache将该电子邮件地址放入X-Remote-User http标头中。等等,这一切都可以。