Авторизация в Openmeetings с учетной записью Active Directory

FreeBSD
Так как Openmeetings напрямую к AD не прикручивается, действовать будем через OpenLDAP.
Итак. Ставим из портов OpenLDAP Server версии не ниже 2.3, так как более младшие версии не могут прозрачно передавать неизвестную схему.

Приводим slapd.conf к следующему виду:

include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/nis.schema

allow bind_v2
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args

logfile /var/log/slapd.log
LogLevel -1 #Нужно для отладки. С этим значением slapd пишет в логи всё что можно.

modulepath /usr/local/libexec/openldap #Путь к модулям
moduleload back_bdb
# moduleload back_hdb
moduleload back_ldap


Простой вариант привязки к AD. Подразумевается что все пользователи находятся в подразделении Users.
database ldap
uri «ldap://server.domain1.exemple.com» # Контроллер домена AD
suffix «cn=Users,dc=domain1,dc=exemple,dc=com» # DN подразделения, откуда будем брать пользователей.
subordinate
rebind-as-user
chase-referrals yes

database bdb # База данных, которую мы создаём в OpenLDAP
suffix «dc=domain1,dc=exemple,dc=com»
rootdn «cn=user,dc=domain1,dc=exemple,dc=com» #Администратор базы на сервере OpenLDAP
rootpw «password»
directory /var/db/openldap-data


Более сложный вариант. C учётом что пользователи раскиданы по разным OU.

#Организационная единица Administrators

database ldap
uri «ldap://server.domain2.exemple.com» # Контроллер второго домена
suffix «ou=Administrators,dc=domain2,dc=exemple,dc=com» Путь к OU Administrators

idassert-bind binddn=«cn=user,ou=Administrators,dc=domain2,dc=exemple,dc=com» # Учётная запись от имени которой OpenLDAP будет обращаться к AD. Должна обязательно присутствовать в данной организационной единице в Active Directory
idassert-bind credentials=«password»
idassert-bind bindmethod=simple
idassert-bind «mode=none»
idassert-authzFrom «dn:*»
subordinate
rebind-as-user
chase-referrals yes

#Организационная единица Students

database ldap
uri «ldap://server.domain2.exemple.com»
suffix «ou=students,dc=domain2,dc=exemple,dc=com»
idassert-bind binddn=«cn=user1,ou=students,dc=domain2,dc=exemple,dc=com»
idassert-bind credentials=«password»
idassert-bind bindmethod=simple
idassert-bind «mode=none»
idassert-authzFrom «dn:*»
subordinate
rebind-as-user
chase-referrals yes

#Организационная единица Teachers

database ldap
uri «ldap://server.domain2.exemple.com»
suffix «ou=teachers,dc=domain2,dc=exemple,dc=com»
idassert-bind binddn=«cn=user3,ou=teachers,dc=domain2,dc=exemple,dc=com»
idassert-bind credentials=«password»
idassert-bind bindmethod=simple
idassert-bind «mode=none»
idassert-authzFrom «dn:*»
subordinate
rebind-as-user
chase-referrals yes

database bdb
suffix «dc=domain2,dc=exemple,dc=com»
rootdn «cn=user,dc=domain2,dc=exemple,dc=com»
rootpw «password»
directory /var/db/openldap-data

index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
index uid eq,pres,sub


На этом с конфигом закончим. Хочу заметить, что slapd очень чувствителен к последовательности строк. Будте внимательны.

Теперь создаём в директории /usr/local/etc/openldap файлы dir.ldif и dir0.ldif со след. содержимым:

dir.ldif:

dn: dc=domain1,dc=exemple,dc=com
objectClass: top
objectClass: organization
objectClass: dcObject
dc: domain1
o: Organization, inc.


dir.ldif0:

dn: dc=domain2,dc=exemple,dc=com
objectClass: top
objectClass: organization
objectClass: dcObject
dc: domain2
o: Organization, inc.


Теперь добавляем в rc.conf строчку slapd_enable=«YES»
И стартуем демон
#/usr/local/etc/rc.d/slapd start


Далее набираем следующие команды:
# ldapadd -x -h localhost -D cn=user,dc=domain1,dc=exemple,dc=com -W -f /usr/local/etc/openldap/dir.ldif
# ldapadd -x -h localhost -D cn=user,dc=domain2,dc=exemple,dc=com -W -f /usr/local/etc/openldap/dir0.ldif


Перезапускаем демон

#/usr/local/etc/rc.d/slapd restart


На этом настройка OpenLDAP закончена. Для общего понимания всего что я тут написал, советую прочитать след. статью: www.osp.ru/win2000/2008/07/5670760/

Теперь переходим к настройке OpenMeetings.

В директории /usr/local/opt/red5/webaps/openmeetings/conf делаем две копии файла om_ldap.cfg и приводим к след. виду:

om_domain1.cfg:

ldap_server_type=OpenLDAP

ldap_conn_url=ldap://localhost:389

ldap_admin_dn=CN:user,CN:Users,DC:domain1,DC:exemple,DC:com # Пользователь должен присутствовать в AD
ldap_passwd=password

ldap_search_base=DC:domain1,DC:exemple,DC:com
field_user_principal=sAMAccountName
ldap_auth_type=SIMPLE

ldap_sync_password_to_om=yes

ldap_user_attr_lastname=sn
ldap_user_attr_firstname=givenName
ldap_user_attr_mail=mail
ldap_user_attr_street=streetAddress
ldap_user_attr_additionalname=description
ldap_user_attr_fax=facsimileTelephoneNumber
ldap_user_attr_zip=postalCode
ldap_user_attr_country=co
ldap_user_attr_town=l
ldap_user_attr_phone=telephoneNumber

ldap_use_lower_case=false


om_domain2.cfg:

ldap_server_type=OpenLDAP

ldap_conn_url=ldap://localhost:389

ldap_search_base=DC:domain2,DC:exemple,DC:com
field_user_principal=sAMAccountName
ldap_auth_type=NONE

ldap_sync_password_to_om=yes

ldap_user_attr_lastname=sn
ldap_user_attr_firstname=givenName
ldap_user_attr_mail=mail
ldap_user_attr_street=streetAddress
ldap_user_attr_additionalname=description
ldap_user_attr_fax=facsimileTelephoneNumber
ldap_user_attr_zip=postalCode
ldap_user_attr_country=co
ldap_user_attr_town=l
ldap_user_attr_phone=telephoneNumber

ldap_use_lower_case=false


В Openmeetings заходим в настройки LDAP и прописываем оба конфига. Обратите внимание, что поиск идёт по атрибуту sAMAccountName, поэтому нужно снять флажок с «Добавить домен к имени»

На этом всё. Прошу сильно не пинать, так как пишу в первый раз. Буду рад ответить на все вопросы. Желаю удачи!

8 комментариев