我正在设置 Redmine 的 LDAP 身份验证,但遇到了一些奇怪的问题。我已经设置并保存了配置,当我在 Redmine 的身份验证模式菜单中单击该配置的“测试”时,它显示“连接成功”。我还设置了一个用户,其用户名存储在 LDAP 主机上,并指定使用配置的 LDAP 身份验证进行身份验证。
但是,当我尝试以该用户身份登录时,它总是失败。几乎就像它无法正确联系 LDAP 服务器(即使测试成功)。我很好奇该测试实际上做了什么,以及是否有办法我可以查看某个地方的某种日志(实际上没有显示太多信息)以显示失败的原因。
有什么想法或建议吗?
答案1
一些应用程序(Redmine,郭,...)可以与 LDAP 集成,但它要求用户存在于其数据库中。看看这我修改了import.php
脚本,将OpenLDAP用户同步到MySQL数据库:
表格users
如下:
mysql> desc users;
+-------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| login | varchar(30) | YES | | | |
| hashed_password | varchar(40) | YES | | | |
| firstname | varchar(30) | YES | | | |
| lastname | varchar(30) | YES | | | |
| mail | varchar(60) | YES | | | |
| admin | tinyint(1) | YES | | 0 | |
| status | int(11) | YES | | 1 | |
| last_login_on | datetime | YES | | NULL | |
| language | varchar(5) | YES | | | |
| auth_source_id | int(11) | YES | MUL | NULL | |
| created_on | datetime | YES | | NULL | |
| updated_on | datetime | YES | | NULL | |
| type | varchar(255) | YES | MUL | NULL | |
| identity_url | varchar(255) | YES | | NULL | |
| mail_notification | varchar(255) | NO | | | |
| salt | varchar(64) | YES | | NULL | |
+-------------------+--------------+------+-----+---------+----------------+
我的 OpenLDAP 模式:
dn: cn=quanta,ou=x,dc=x,dc=x
cn: quanta
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
mail: [email protected]
givenName: a
initials: b
sn: c
userPassword: {SSHA}123
因此,我导入如下内容:
"INSERT INTO users (login, firstname, lastname, mail, mail_notification, \
admin, status, language, auth_source_id, created_on, type) \
VALUES('" . $data[$i]["cn"][0] . "','" . $data[$i]["givenname"][0] . "',\
'" . $data[$i]["sn"][0]." ".$data[$i]["initials"][0] . "',\
'" . $data[$i]["mail"][0] . "',false,false,1,'en','1',\
'".date('Y-m-d H:m:s')."','User')";
我还设置了一个因克龙每当有用户插入或更新到 OpenLDAP 时,都会自动执行此操作:
/var/lib/ldap/*.bdb IN_MODIFY,IN_CREATE,IN_CLOSE_WRITE /usr/bin/php -q /var/www/html/import.php
答案2
这其实是用户名不正确的简单问题。将其更改为正确的用户名即可解决问题。