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

Смена DN в OpenLDAP «на лету»

Я новичок в LDAP, и у меня возникла следующая проблема:

Я использую OpenLDAP в качестве кэширующего прокси для удаленного Active Directory.

А полный DN пользователя похож на "cn=Doe\, John,ou=users,ou=others,dc=company,dc=com", в то время uid (sAMAccountName) - это краткая форма имени и фамилии. Например Джон Доу будет jdoe.

У меня уже есть сервер SVN, Bugzilla и ReviewBoard, которые отлично работают с этим, потому что у них есть много настроек для поддержки LDAP. Но сейчас я пытаюсь настроить YouTrack, а в нем нет настроек LDAP.

Я хочу иметь возможность войти в YouTrack, используя краткую форму входа (например, "jdoe"), но когда я установил строку преобразования в YouTrack как "sAMAccountName=$login$,ou=users,ou=others,dc=company,dc=com" У меня все время возникает следующая ошибка:

[LDAP: код ошибки 49 - 80090308: LdapErr: DSID-0C0903A9, комментарий: ошибка AcceptSecurityContext, данные 52e, v1db1], что является «недопустимыми учетными данными».

Но если я явно укажу полное имя в строке преобразования, я могу войти в систему (но, конечно, никто другой):

"cn=Doe\, John,ou=users,ou=others,dc=company,dc=com"

Итак, мой вопрос: могу ли я изменить DN пользователя «на лету», чтобы получить что-то вроде этого, например:

"cn=jdoe,ou=users,ou=others,dc=company,dc=com"

?

Хотя этот вопрос может быть немного староват, у меня есть несколько мыслей по этому поводу. Может быть, это кому-нибудь поможет в будущем:

  1. Вы можете просто изменить DN, используя ldapmodify с участием changetype: moddn или modrdn предоставление нового DN (newrdn). Более подробную информацию об этом можно найти в пункте № 4 здесь: http://www.zytrax.com/books/ldap/ch8/#changetype
  2. Вы можете использовать оверлей «rwm» в OpenLDAP. Это позволяет вам либо переписать свой DN, либо изменить суффикс, либо даже предоставить виртуальное представление ваших данных. Проверьте man 5 slapo-rwm. Эта штука действительно мощная!
  3. Другой способ - установить псевдоним для начальной записи. cn=jdoe,ou=users,ou=others,dc=company,dc=com может относиться к объектному классу "псевдоним" и иметь вашу первоначальную учетную запись, записанную в атрибут aliasedObjectName. Все, что вам нужно сделать в этом случае, - это проверить, следует ли операция ldapsearch по рефералам или нет.

На моем сервере у меня аналогичная установка, и я выбрал третий способ. Чтобы он был полностью чистым, я создал свою собственную схему, в которой у меня есть специальный класс объекта псевдонима для этого, который предоставляет необходимые дополнительные поля.