Авторизация в Redmine через ActiveDirectory с использованием ролей

Всем привет! Столкнулся недавно с, казалось бы, уже многократно пережеванной задачей — интеграцией Redmine и Active Directory, но с одни доп. условием — авторизация должна проходить только для пользователей из определенной группы в AD. Ну сказано — сделано. Поэтому, чтобы и самому не забыть, да и, вдруг, кому пригодиться, оставлю здесь пошаговую инструкцию.

Для ясности договоримся, что домен у нас зовется domain.local

Итак, первым делом, нам нужен служебный пользователь в AD с правами на чтение атрибутов всех пользователей домена (ну или отдельно взятой ОУшки). Сделать это несложно, пускай пользователя будут звать ldap_agent. Теперь в оснастке управления AD (пользователи и компьютеры) выбираем нужный домен/ОУшку, кликаем в меню Действия->Делегирование управления, в визарде всё понятно без слов, поэтому пропущу этот момент. Итак, двигаемся далее. Теперь займемся непосредственно Redmine’ом. Тут тоже все просто. Администрирование ->Авторизация с помощью LDAP. Там добавляем новый способ аутентификации или правим уже существующий (если таковой имеется). Переходим в форму настройки аутентификации. Там пишем следующее:

Имя: ActiveDirectory # любое имя, идентифицирующее текущий способ аутентификации 
Компьютер: dc.domain.local # имя (или IP) хоста, выполняющего роль контроллера домена 
Порт: 389 # порт, на котором висит сервис LDAP на контроллере домена (для ActiveDirectory по умолчанию 389) 
Учётная запись: domain\ldap_agent # учетная запись в домене, под которой будем коннектиться к контроллеру и аутентифицировать пользователя (данному пользователю должны быть выданы права на чтение всех атрибутов всех пользователей домена или ОУшки, для которой должна работать авторизация) 
Пароль: long_secret # пароль вышеуказанной учетной записи 
Base DN: dc=domain, dc=local # базовые параметры домена (и/или ОУшки в этом случае в начале строке следует дописать еще примерно вот это: ou=ouName,...) 
Фильтр LDAP: (&(objectClass=user)(memberOf=cn=RedmineUsers, ou=LocDomainGroups, dc=domain, dc=local)) # Фильтр, позволяющий реализовать более гибкую систему авторизации, например, авторизовать пользователя только при наличии определенной роли. В качестве примера, пускаем только пользователей из группы ReadmineUsers, которая, в свою очередь, находится в ОУшке LocDomainGroups. 
Таймаут в секундах: # время ожидания ответа от контроллера - оставим пустым (и пусть весь мир подождет)))) 
Создание пользователя на лету: true # позволяет автоматически создавать пользователя при его первой успешной авторизации

В разделе формы с атрибутами настраиваем соответствие атрибутов пользователя в Redmine к атрибутам пользователя в AD:

Пользователь: sAMAccountName # наименование атрибута в LDAP, с которым будет сравниваться логин пользователя 
Имя: givenName # наименование атрибута в LDAP, из которого будет автоматически подтягиваться имя пользователя в Redmine 
Фамилия: sn # наименование атрибута в LDAP, из которого будет автоматически подтягиваться фамилия пользователя в Redmine 
email: mail # наименование атрибута в LDAP, из которого будет автоматически подтягиваться email пользователя в Redmine

 

redmine_ldap

Вот, собственно, и всё. Да, чуть не забыл. Этот способ был опробован на Redmine версии 2.1, в более ранних версиях не было возможности задавать дополнительные LDAP-фильтры.

Источник: http://zen-development.blogspot.com/2012/12/redmine-activedirectory.html

Posted in Redmine and tagged .

3 Comments

  1. Привет. Пытаюсь тоже прикрутить интеграцию с AD, однако у меня не заводится. Ты аппач перед настройкой не крутил? или может быть доп настройки?

  2. >> Привет. Пытаюсь тоже прикрутить интеграцию с AD, однако у меня не заводится. Ты аппач перед настройкой не крутил? или может быть доп настройки?

    Привет, Михаил! Если дадите удаленный доступ — настрою вам все (ну, или по крайней мере попытаюсь!) за 5 се… за быттро в общем. Но на счет скорости не гарантирую ессно 🙂

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.