Назад | Перейти на главную страницу

Redmine LDAPS Аутентификация

Я настраиваю аутентификацию Redmine LDAP и сталкиваюсь с некоторыми странными проблемами. У меня есть настройки и сохранены настройки, и когда я нажимаю «Тест» в меню режимов аутентификации в Redmine для этой конфигурации, появляется сообщение «Успешное соединение». Я также установил пользователя с именем пользователя, хранящимся на хосте LDAP и указанным для аутентификации с использованием настроенной аутентификации LDAP.

Однако когда я пытаюсь войти в систему как этот пользователь, это всегда терпит неудачу. Это почти как если бы он не мог должным образом связаться с сервером LDAP (даже если тест прошел успешно). Мне любопытно, что на самом деле делает этот тест, и если есть способ посмотреть где-нибудь в каком-то журнале (на самом деле ничего не видно), чтобы показать, что / почему он терпит неудачу.

Есть идеи или предложения?

На самом деле это была простая проблема с неправильным именем пользователя. Изменение его на правильный устранило проблему.

Некоторые приложения (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: x@y.z
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')";

Я также установил Incron задание делать это автоматически всякий раз, когда пользователь вставляется или обновляется в OpenLDAP:

/var/lib/ldap/*.bdb IN_MODIFY,IN_CREATE,IN_CLOSE_WRITE /usr/bin/php -q /var/www/html/import.php