Настройка Cisco CallManager в связке с OpenLDAP

авторы: Андрей Морозов, Александр Дейтер
дата последнего исправления: 25.08.2004

Эта статья посвящена настройке совместной работы Cisco CallManager и OpenLDAP. Такая связка позволяет пользователю администрировать свои VoIP устройства, зарегистрированные на Cisco CallManager, искать и звонить по телефонам, заведённым в службе каталогов и избавляет администратора Cisco CallManager вести параллельную базу пользователей.

Принятые сокращения

  1. CCM - Cisco CallManager

Принятые обозначения

  1. Команды shell: $ ls -l
  2. Директивы конфигурационных файлов: index objectClass eq

Программные пакеты

Программные пакеты, которые будут задействованы в процессе настройки:
  1. OpenLDAP,  доступный в коллекции портов FreeBSD (net/openldap22-server). Рабочая версия 2.2.6.
  2. Cisco CallManager. Рабочая версия 3.3.4.

Конфигурация OpenLDAP

1. Необходимо добавить описание схемы CCM в конфигурационный файл сервера slapd.conf:

include    /usr/local/etc/openldap/schema/cisco.schema

2. Добавить необходимые права доступа:

access to dn.base=""
        by * read

access to attr=entry,objectClass
        by dn="uid=ccm,ou=It,dc=komi,dc=mts,dc=ru" write
        by * read

access to attr=cn,givenName,sn,mail,description,uid
        by * read

access to attr=ciscoatUserProfileString,ciscoatGUID,ciscoatUserProfile
        by dn="uid=ccm,ou=It,dc=komi,dc=mts,dc=ru" write
        by self write
        by * read

access to dn.subtree="ou=Cisco,dc=komi,dc=mts,dc=ru"
        by dn="uid=ccm,ou=It,dc=komi,dc=mts,dc=ru" write
        by self write
        by * read

access to attr=userPassword
        by self write
        by anonymous auth
        by * none

3. Для ускорения работы можно добавить индексы:

index   objectClass                             eq

index   ou                                      eq
index   uid,uidNumber,gidNumber,memberUid       eq
index   cn,mail,surname,givenname               eq,subinitial

4. Создать персонаж CCM:

dn: uid=ccm,ou=It,dc=komi,dc=mts,dc=ru
objectClass: top
objectClass: simpleSecurityObject
objectClass: account
userPassword: CcmUserPassword
uid: ccm

Конфигурация Cisco CallManager

Предполагается что Вы уже приобрели и установили CCM. Для его настройки необходимо проделать следующие действия :

1. Обязательно ознакомиться с документом "Installing the Cisco Customer Directory Configuration Plugin for Cisco CallManager Release 3.3".

2. Из пункта выбрать Application -> Install PlugIn:

PlugIn Install

3. В списе доступных расширений выбрать "Cisco Customer Directory Configuration PlugIn":

Cisco Customer Directory Configuration PlugIn

4. Выбрать пункт "Configure Netscape Directory Server":

Configure Netscape Directory Server

5. Выбрать тип установки "Custom", выбрать все компоненты:

Custom

6. Заполнить соответствующие поля:

ldap setting

После нажатия кнопки Next CCM обращается к LDAP серверу, где создает двух пользователей CCMAdministrator и CCMUser и системные профили конфигурации CCM. После всех этих манипуляций следует перезагрузка. После перезагрузки всё работает и всё бы хорошо, но не всё хорошо, а именно: LDAP атрибут, при помощи которого CCM ищет и аутенфицирует пользователя. При установке "Cisco Customer Directory Configuration PlugIn" значение этого атрибута по умолчанию: mail. Менять его не следует, т.к. в этом случае не будут созданы служебные пользователи: CCMAdministrator и CCMUser. Если в дальнейшем Вам захочеться использовать другой атрибут для аутенфикации пользователя, скажем, uid , тогда придётся перенастроить CCM. Для этого необходимо поправить в System Profile значение атрибута  ciscoCCNatUserSearchAttr с mail на uid:

dn: cn=System Profile,ou=systemProfile,ou=CCN,ou=Cisco,dc=komi,dc=mts,dc=ru

cn: System Profile
objectClass: top
objectClass: ciscoCCNocSystemProfile
objectClass: ciscoTop
ciscoCCNatCurrentReplicationID: 100
ciscoCCNatMaxSearchResults: 500
ciscoCCNatDeviceBase: ou=devices, ou=CCN
ciscoCCNatProfileBase: ou=profiles, ou=CCN
ciscoCCNatIAQFlag: false
ciscoCCNatCTIUseEnabledDefaultValue: false
ciscoCCNatAAInstalled: false
ciscoCCNatSoftPhoneInstalled: true
ciscoCCNatASRInstalled: false
ciscoCCNatHotellingInstalled: true
ciscoCCNatPINLength: 5
ciscoCCNatPasswordLength: 5
ciscoCCNatChunkSize: 250
ciscoCCNatNamingAttribute: cn
ciscoCCNatUserObjectClass: inetOrgPerson
ciscoCCNatUserBase: dc=komi,dc=mts,dc=ru
ciscoCCNatUserCreationBase: ou=Cisco,dc=komi,dc=mts,dc=ru
ciscoCCNatUserSearchAttr: uid

Результат

1. http://callmanager/ccmAdmin/main.asp -> User -> Global Directory позволит администратору искать и модифицировать пользователей в дереве каталогов, связывать с ними VoIP устройства:

CCM Admin

2. http://callmanager/ccmuser/options.asp позволит пользователю редактировать свой профиль, например, переадресацию, правила быстрого набора и личную адресную книгу. Кроме того, пользователь может сменить себе пароль и PIN (персональный идентификационный номер, который используется для доступа к сервисам IP-телефона Cisco):

CCM User

3.  На  VoIP устройствах (например, Cisco IP Phone7940) появляется возможность искать собеседников и их телефонные номера  в  корпоративном дереве каталогов:

Directory search

Замеченные проблемы

1. CCM не работает с UTF-8 encoded атрибутами сервера каталогов:

Using non-ISO-Latin 1 characters greater than 127 with DC Directory, Netscape Directory, or Active Directory can cause directory database errors. Cisco CallManager Release 3.3 supports all ISO-Latin1 (ISO-8859-1) characters and all non-ISO-Latin 1 characters in the range 0-127 with any directory.
Cisco CallManager only supports ISO-Latin 1 (ASCII) characters and non-ISO-Latin1 characters in the range 0-127 in the fields and in all user accounts and passwords that are needed to access these windows. If a user enters data that is not in the allowed character range, A dialog box displays and states that the user must enter data by using only ISO-Latin1 characters and non-ISO-Latin1 characters in the range 0-127.

Из-за чего при просмотре/редактировании свойств пользователя мы можем наблюдать символы ??? вместо русских букв:

UTF-8 bug

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

UTF-8 bug

Как вариант, значения атрибутов surName и givenName можно хранить в латинице:

dn: cn=Alex Deiter,ou=People,dc=komi,dc=mts,dc=ru
objectClass: top
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: person
objectClass: organizationalPerson
cn: Alex Deiter
uid: login
mail: login@komi.mts.ru
sn: Deiter
givenName: Alex
...