Redmine LDAPS 身份验证

Redmine LDAPS 身份验证

我正在设置 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

这其实是用户名不正确的简单问题。将其更改为正确的用户名即可解决问题。

相关内容