Интеграция AD/ldap
В разделе приведены описания интеграции AD/ldap, которая отвечает за следующие задачи и функции:
- Синхронизация параметров alias;
- Авторизация в CoCon/Web;
- Авторизация в КЦ;
- Авторизация в Портале абонента;
- Выполнение модификации cgpn/cdpn при установлении соединения с TrueConf.
Создание и настройка интеграции ECSS10
Active Directory
domain/<DOMAIN>/ldap/declare <ID> <TYPE> <HOST> <PORT> <DC_OR_DOMAIN>
где:
- <DOMAIN> — имя виртуальной АТС;
- <ID> — уникальный идентификатор AD-сервера;
- <HOST> — IP или доменное имя AD-сервера;
- <PORT> — Port AD-сервера;
- <DC_OR_DOMAIN> — корневой домен AD, например eltex.loc;
- <TYPE> — LDAP-сервер тип, ldap или ad.
1. Настройка интеграции.
domain/test_domain/ldap/declare server_ad ad 192.168.114.224 default voip.eltex.local
2. Настройка пользователя для авторизации и синхронизации.
domain/<DOMAIN>/ldap/set <ID> sync-auth <AD user login> <AD user password>
где:
- <DOMAIN> — имя виртуальной АТС;
- <ID> — уникальный идентификатор AD-сервера;
- sync_auth — настройка логина и пароля пользователя AD, под которым будет происходить авторизация для синхронизации аккаунтов.
domain/test_domain/ldap/set ad_test sync-auth michail.svetlov 12345 LDAP/AD server' ad_test property "sync-auth" successfully updated
3. Просмотр активных подключений.
domain/<DOMAIN>/ldap/info
где:
- <DOMAIN> — имя виртуальной АТС.
domain/test_domain/ldap/info ┌──────────────────────────────┬──┬──────────────────────────────────────────────────┬────────────────────────────────────────────────────────────────────────────────┐ │ Id │T │ Host:Port │ Properties │ ├──────────────────────────────┼──┼──────────────────────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────┤ │ad_test │A │192.168.56.30:default │Domain: voip.eltex.local │ │ │ │ │SSL: false │ │ │ │ │Sync Authenticated at: michail.svetlov │ └──────────────────────────────┴──┴──────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────┘ Total: 1 server(s)
4. Проверка соединения.
domain/<DOMAIN>/ldap/check-connection <ID>
где:
- <DOMAIN> — имя виртуальной АТС;
- <ID> — уникальный идентификатор AD-сервера.
domain/test_domain/ldap/check-connection ad_test Connection successful
5. Настройка синхронизации учетных данных.
Для синхронизации учетных данных:
- Создайте на softswitch SIP-аккаунт;
- Создайте пользователя на AD-сервере;
- Укажите пользователю на AD-сервере информацию, которую необходимо синхронизировать с softswitch.
Команда синхронизации SIP-аккаунта с пользователем AD:
domain/<DOMAIN>/ldap/sync/force <ID> <ADDRESS>
где:
- <DOMAIN> — имя виртуальной АТС;
- <ID> — уникальный идентификатор AD-сервера;
- <ADDRESS> — alias абонента.
domain/test_domain/ldap/sync/force ad_test 42005 Alias with address 42007 synchronized successfully
Синхронизация происходит по параметру sip-user-name на softswitch и параметру TelephoneNumber на AD.
6. Проверка синхронизации.
Для проверки синхронизации используйте команду.
domain/<DOMAIN>/alias/info <ADDRESS>
где:
- <DOMAIN> — имя виртуальной АТС;
- <ADDRESS> — alias абонентаю
Выполнение команды до синхронизации:
domain/test_domain/alias/info 42005 Aliases in domain test_domain ┌───────┬─────────────────┬─┬─┬──────────────────────────┬────────────────────────────────┐ │Address│ Iface │A│W│ Property │ Value │ ├───────┼─────────────────┼─┼─┼──────────────────────────┼────────────────────────────────┤ │42005 │42005@test_domain│ │ │user_agent │"VP-15P/2.7.6.34 sofia-sip/1.12"│ │ │ │ │ │uid │06b4e88042702a1c │ │ │ │ │D│timezone │'UTC+07:00' │ │ │ │ │ │terminal_type │smart │ │ │ │ │D│ss\mgm\telephone │enabled │ │ │ │ │p│screening │networkProvided │ │ │ │ │ │profile │"user_default" │ │ │ │ │D│pin │"1111" │ │ │ │ │p│npi │isdnTelephony │ │ │ │ │p│ni │private │ │ │ │ │p│nai │subscriberNumber │ │ │ │ │d│media-profile │"default" │ │ │ │ │ │isIfaceActive │false │ │ │ │ │p│category │ordinarySubscriber │ │ │ │ │d│access_type │access_type0 │ │ │ │ │p│access_group │all │ └───────┴─────────────────┴─┴─┴──────────────────────────┴────────────────────────────────┘
Выполнение команды после синхронизации:
domain/test_domain/alias/info 42005 Aliases in domain test_domain ┌───────┬─────────────────┬─┬─┬──────────────────────────┬────────────────────────────────┐ │Address│ Iface │A│W│ Property │ Value │ ├───────┼─────────────────┼─┼─┼──────────────────────────┼────────────────────────────────┤ │42005 │42005@test_domain│ │ │user_agent │"VP-15P/2.7.6.34 sofia-sip/1.12"│ │ │ │ │ │uid │06b4e88042702a1c │ │ │ │ │D│timezone │'UTC+07:00' │ │ │ │ │ │terminal_type │smart │ │ │ │ │D│ss\mgm\telephone │enabled │ │ │ │ │p│screening │networkProvided │ │ │ │ │ │profile │"user_default" │ │ │ │ │D│pin │"1111" │ │ │ │ │p│npi │isdnTelephony │ │ │ │ │p│ni │private │ │ │ │ │p│nai │subscriberNumber │ │ │ │ │d│media-profile │"default" │ │ │ │ │ │ldap\id │stepanov@voip.eltex.local │ │ │ │ │ │isIfaceActive │false │ │ │ │ │ │email │"stepan.stepanov@eltex.loc" │ │ │ │ │ │displayName │stepan.stepanov │ │ │ │ │p│category │ordinarySubscriber │ │ │ │ │d│access_type │access_type0 │ │ │ │ │p│access_group │all │ └───────┴─────────────────┴─┴─┴──────────────────────────┴────────────────────────────────┘
LDAP-сервер в CoCon
На уровне LDAP-серверов есть следующие поля:
- id — уникальный идентификатор LDAP-сервера;
- host — Host или IP до LDAP-сервера;
- port — Port LDAP-сервера;
- base_search_dn — базовая ветка, относительно который начинаем искать;
- login_attribute — атрибут, по которому ищем пользователя в LDAP;
- recursive_search — поиск пользователя LDAP рекурсивно во всем поддереве DN (true) или только на одном уровне (false);
- search_auth — логин/пароль для выполнении поиска в LDAP-сервере;
- use_ssl — использование SSL-соединения;
- ssl_certificate — SSL-сертификат для SSL-соединения.
1. Настройка интеграции.
domain/<DOMAIN>/ldap/declare <ID> <TYPE> <HOST> <PORT> <DC_OR_DOMAIN>
где:
- <DOMAIN> — имя виртуальной АТС;
- <ID> — уникальный идентификатор AD-сервера;
- <HOST> — IP или доменное имя AD-сервера;
- <PORT> — Port AD-сервера;
- <DC_OR_DOMAIN> — LDAP Base DN, например dc=eltex,dc=local;
- <TYPE> — LDAP-сервер тип, ldap или ad.
domain/test_domain/ldap/declare ldap_eltex ldap 192.168.56.157 default dc=eltex,dc=local LDAP server ldap_eltex successfully configured
2. Настройка атрибута пользователя для авторизации и синхронизации.
domain/<DOMAIN>/ldap/set <ID> login-attribute <LDAP login attribute>
где:
- <DOMAIN> — имя виртуальной АТС;
- <ID> — уникальный идентификатор AD-сервера;
- <LDAP login attribute> — атрибут LDAP для поиска имени пользователя.
domain/test_domain/ldap/set ldap_eltex login-attribute cn LDAP/AD server' ldap_eltex property "login-attribute" successfully updated
3. Настройка логина и пароля пользователя, выполняющего LDAP-запрос.
domain/<DOMAIN>/ldap/set <ID> search-auth <LDAP user's login for search auth> <LDAP user's password>
где:
- <DOMAIN> — имя виртуальной АТС;
- <ID> — уникальный идентификатор AD-сервера;
- <LDAP user's login for search auth> — логин пользователя, выполняющего LDAP-запрос;
- <LDAP user's password> — пароль пользователя, выполняющего LDAP-запрос.
domain/test_domain/ldap/set ldap_eltex search-auth cn=admin,dc=eltex,dc=local 12345 LDAP/AD server' ldap_eltex property "search-auth" successfully updated
4. Просмотр активных подключений.
domain/<DOMAIN>/ldap/info
где:
- <DOMAIN> — имя виртуальной АТС.
domain/test_domain/ldap/info ┌────────────────────────────────┬──┬──────────────────────────────────────────────────────┬───────────────────────────────────────────────────────────────────────────────────────┐ │ Id │T │ Host:Port │ Properties │ ├────────────────────────────────┼──┼──────────────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────┤ │ldap_eltex │L │192.168.56.157:default │Base DN: dc=eltex,dc=local │ │ │ │ │Login attribute: cn │ │ │ │ │Search scope: Subtree (recursive) │ │ │ │ │Authenticated at: cn=admin,dc=eltex,dc=local │ │ │ │ │SSL: false │ └────────────────────────────────┴──┴──────────────────────────────────────────────────────┴───────────────────────────────────────────────────────────────────────────────────────┘ Total: 1 server(s)
5. Проверка соединения.
domain/<DOMAIN>/ldap/check-connection <ID>
где:
- <DOMAIN> — имя виртуальной АТС;
- <ID> — уникальный идентификатор AD-сервера.
domain/test_domain/ldap/check-connection ldap_eltex Connection successful
LDAP-сервер в web
Пример настройки параметров соединения с LDAP-сервером через web.
Обратите внимание на поле «Поиск пользователей». В нем указывается логин и пароль в формате «cn=<name>,dc=<name>,dc=<name>:12345». Перед паролем водится «:».
В данном примере «логин/пароль» → «admin/12345» соответственно. В этом случае укажите в поле «Поиск пользователей/Search auth» → «cn=admin,dc=evndomain,dc=loc:12345».
Авторизация в web/Cocon с использованием LDAP-сервера
Позволяет использовать учетные записи пользователя, созданные на LDAP-сервере для последующего входа в CoCon/Web.
Отредактируйте конфигурационный файл /etc/ecss/global.config. Выполните команду на обоих хостах.
%% File autogenerate. . . . {cocon, [ % ms, delay for node in cluster group {heartbeat, 3000}, % name of amqp exchange {exchange, "ccn.direct"}, % Type DB storage for user authentication (ldap, mysql, undefined) %% default: mysql {user_data, 'mysql'}, % Type DB for audit data (ldap, mysql, undefined) %% default: mysql {audit, 'mysql'}, %%%% Settings LDAP (not required) %% ldap ip {ldap_server_ip, "cocon.ldap.ecss"}, %% ldap port {ldap_server_port, "389"}, %% DN for storage users {ldap_people_dn, "ou=people,dc=ecss"}, %% DN for storage groups {ldap_groups_dn, "ou=groups,dc=ecss"}, %% DN for storage events {ldap_audit_dn, "ou=audit,dc=ecss"}, %% DN for ldap usages (audit, etc) {ldap_system_username, "cn=admin,dc=ecss"}, {ldap_system_password, "admin"}, . . .
Необходимо изменить несколько строк:
- В строке {user_data, 'mysql'} значение переменной user_data равной mysql замените на ldap. Получится строка {user_data, 'ldap'};
- В строке {ldap_server_ip, "cocon.ldap.ecss"} значение переменной ldap_server_ip равной cocon.ldap.ecss замените на <Ipadd ldap сервера>, для примера 10.0.20.51. Получится строка {ldap_server_ip, "10.0.20.51"};
- В строке {ldap_people_dn, "ou=people,dc=ecss"}, значение переменной ldap_people_dn равной ou=people,dc=ecss заменить на distinguished name (отличительное имя) в вашем LDAP-сервере, для примера ou=people,dc=myldap,dc=eltex,dc=local. Получится строка {ldap_people_dn, "ou=people,dc=myldap,dc=eltex,dc=local"};
- В строке {ldap_groups_dn, "ou=groups,dc=ecss"}, значение переменной ldap_groups_dn равной ou=groups,dc=ecss заменить на distinguished name (отличительное имя) в вашем LDAP-сервере, для примера ou=groups,dc=myldap,dc=eltex,dc=local. Получится строка {ldap_groups_dn, "ou=groups,dc=myldap,dc=eltex,dc=local"},
- Вставьте следующие строки (distinguished name (отличительное имя) в примере dc=myldap,dc=eltex,dc=local в вашем случае укажите данные LDAP-сервера) %% DN for storage roles {ldap_roles_dn, "ou=roles,dc=myldap,dc=eltex,dc=local"};
- В строке {ldap_system_username, "cn=admin,dc=ecss"}, значение переменной ldap_system_username равной cn=admin,dc=ecss заменить на distinguished name (отличительное имя) в вашем LDAP-сервере, для примера cn=admin,dc=myldap,dc=eltex,dc=local. Получится строка {ldap_system_username, "cn=admin,dc=myldap,dc=eltex,dc=local"};
- В строке {ldap_system_password, "admin"}, значение переменной ldap_system_password равной admin заменить на пароль администратора в вашем LDAP-сервере для примера eltex. Получится строка {ldap_system_password, "eltex"}.
В результате файл отобразится следующим образом:
%% File autogenerate. . . . {cocon, [ % ms, delay for node in cluster group {heartbeat, 3000}, % name of amqp exchange {exchange, "ccn.direct"}, % Type DB storage for user authentication (ldap, mysql, undefined) %% default: mysql {user_data, 'ldap'}, % Type DB for audit data (ldap, mysql, undefined) %% default: mysql {audit, 'mysql'}, %%%% Settings LDAP (not required) %% ldap ip {ldap_server_ip, "10.0.20.51"}, %% ldap port {ldap_server_port, "389"}, %% DN for storage users {ldap_people_dn, "ou=people,dc=myldap,dc=eltex,dc=local"}, %% DN for storage groups {ldap_groups_dn, "ou=groups,dc=myldap,dc=eltex,dc=local"}, %% DN for storage roles {ldap_roles_dn, "ou=roles,dc=myldap,dc=eltex,dc=local"}, %% DN for storage events {ldap_audit_dn, "ou=audit,dc=ecss"}, %% DN for ldap usages (audit, etc) {ldap_system_username, "cn=admin,dc=myldap,dc=eltex,dc=local"}, {ldap_system_password, "eltex"}, . . .
Перезапустите сервисы "ecss-*" на обоих хостах, для этого выполните команду ниже. Команда выполняется последовательно, дождитесь окончания выполнения на сервере ecss1, проверьте что все сервисы поднялись. Выполните команду на сервере ecss2.
выполните сначала на ecss1, затем на ecss2
sudo systemctl restart ecss-mediator.service ecss-pa-sip.service ecss-core.service ecss-ds.service ecss-mycelium.service
После перезагрузки SSW на LDAP-сервере отобразяться следующие директории:
- ou=groups,dc=myldap,dc=eltex,dc=local;
- ou=people,dc=myldap,dc=eltex,dc=local;
- ou=roles,dc=myldap,dc=eltex,dc=local.
В директориях будет храниться информация системных пользователей SSW, по умолчанию admin и support.
Данные пользователя необходимы для входа в систему через cocon или веб.
ssh operator@localhost -p8023 operator@localhost's password: operator@[mycelium1@ecss1]:/$ system-status Checking... ┌─┬───────────────┬──────────────────────────┬───────────────────────────────┬─────────────────────┬──────┐ │ │ Node │ Release │ Erlang nodes │ Mnesia nodes │Uptime│ ├─┼───────────────┼──────────────────────────┼───────────────────────────────┼─────────────────────┼──────┤ │ │core1@ecss1 │ecss-core-3.14.15.1004 │core1@ecss1,core1@ecss2 │not running │1h 5m │ │ │core1@ecss2 │ecss-core-3.14.15.1004 │core1@ecss1,core1@ecss2 │not running │1h 5m │ │ │ds1@ecss1 │ecss-ds-3.14.15.1004 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │1h 5m │ │ │ds1@ecss2 │ecss-ds-3.14.15.1004 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │1h 5m │ │ │md1@ecss1 │ecss-mediator-3.14.15.1004│md1@ecss1,md1@ecss2 │md1@ecss1,md1@ecss2 │1h 5m │ │ │md1@ecss2 │ecss-mediator-3.14.15.1004│md1@ecss1,md1@ecss2 │md1@ecss1,md1@ecss2 │1h 5m │ │ │mycelium1@ecss1│ecss-mycelium-3.14.15.1004│mycelium1@ecss1,mycelium1@ecss2│not running │1h 5m │ │ │mycelium1@ecss2│ecss-mycelium-3.14.15.1004│mycelium1@ecss1,mycelium1@ecss2│not running │1h 5m │ │ │sip1@ecss1 │ecss-pa-sip-3.14.15.1004 │sip1@ecss1,sip1@ecss2 │sip1@ecss1,sip1@ecss2│1h 5m │ │ │sip1@ecss2 │ecss-pa-sip-3.14.15.1004 │sip1@ecss1,sip1@ecss2 │sip1@ecss1,sip1@ecss2│1h 5m │ └─┴───────────────┴──────────────────────────┴───────────────────────────────┴─────────────────────┴──────┘
Настройка синхронизации учетных данных alias
Для синхронизации учетных данных:
- Создайте на софтсвитче SIP-аккаунт;
- Создайте пользователя на LDAP-сервере;
- Укажите пользователю на LDAP-сервере информацию, которую мы хотим синхронизировать с softswitch для этого выполнить команду:
domain/<DOMAIN>/ldap/sync/properties/set --ldap_to_alias_settings_map <LDAP parametr> <alias parametr> <type of parameter>
где:
- <DOMAIN> — имя виртуальной АТС;
- <LDAP parametr> — параметр, получаемый из LDAP базы данных;
- <alias parametr> — один из поддерживаемых параметров для alias;
- <type of parameter> — тип параметра (atom, binary, integer, string, term).
domain/test_domain/ldap/sync/properties/set --ldap_to_alias_settings_map displayname displayName string Success: Option(s) changed successfully.
До изменения параметра:
domain/test_domain/ldap/sync/properties/info ┌─────────────────────────────┬───────────┬────────────────────────────────────────────────────────────────────────────────┐ │ Property │ Domain │ Value │ ├─────────────────────────────┼───────────┼────────────────────────────────────────────────────────────────────────────────┤ │deactivate_list │test_domain│[] │ │clean_list │test_domain│[] │ │set_list │test_domain│[] │ │delete_nonexistent_properties│test_domain│false │ │sleep_interval │test_domain│disabled │ │synchronize_interval │test_domain│undefined │ │ldap_to_alias_settings_map │test_domain│#{"cn" => {[displayName],string}, │ │ │ │ "jabber_id" => {[jabber,id],string}, │ │ │ │ "mail" => {[email],string}} │ │search_parameter │test_domain│"telephoneNumber" │ │server │test_domain│<<"ldap_eltex">> │ └─────────────────────────────┴───────────┴────────────────────────────────────────────────────────────────────────────────┘
После изменения параметра:
domain/test_domain/ldap/sync/properties/info ┌─────────────────────────────┬───────────┬────────────────────────────────────────────────────────────────────────────────┐ │ Property │ Domain │ Value │ ├─────────────────────────────┼───────────┼────────────────────────────────────────────────────────────────────────────────┤ │deactivate_list │test_domain│[] │ │clean_list │test_domain│[] │ │set_list │test_domain│[] │ │delete_nonexistent_properties│test_domain│false │ │sleep_interval │test_domain│disabled │ │synchronize_interval │test_domain│undefined │ │ldap_to_alias_settings_map │test_domain│#{"cn" => {[subscriber_portal,login],string}, │ │ │ │ "displayname" => {[displayName],string}, │ │ │ │ "jabber_id" => {[jabber,id],string}, │ │ │ │ "mail" => {[email],string}} │ │search_parameter │test_domain│"telephoneNumber" │ │server │test_domain│<<"ldap_eltex">> │ └─────────────────────────────┴───────────┴────────────────────────────────────────────────────────────────────────────────┘
Команда синхронизации SIP-аккаунта с пользователем LDAP:
domain/<DOMAIN>/ldap/sync/force <ID> <ADDRESS>
где:
- <DOMAIN> — имя виртуальной АТС;
- <ID> — уникальный идентификатор LDAP-сервера;
- <ADDRESS> — alias абонента.
domain/test_domain/ldap/sync/force ldap_eltex 42007 Alias with address 42007 synchronized successfully
Синхронизация происходит по параметру sip-user-name на softswitch и параметру "TelephoneNumber" на LDAP.
Контроль пользователей в LDAP-сервере производится именно по параметру "TelephoneNumber". Вне зависимости от того, как вы записали этот параметр в *.ldif файле.
Пример:
# Entry 23: cn=42009,ou=people,dc=myldap,dc=eltex,dc=local dn: cn=42009,ou=people,dc=myldap,dc=eltex,dc=local cn: 42009 entrydn: cn=42009,ou=people,dc=myldap,dc=eltex,dc=local mail: ivanov.ivan objectclass: inetOrgPerson objectclass: top sn: 42009 structuralobjectclass: inetOrgPerson subschemasubentry: cn=Subschema telephonenumber : 42009 uid: ivanov userpassword: 42009
SSW использует в LDAP-схеме именно атрибут TelephoneNumber.
ldapsearch -x -D cn=admin,dc=myldap,dc=eltex,dc=local -w -b cn=42009,ou=people,dc=myldap,dc=eltex,dc=local -s sub # extended LDIF # # LDAPv3 # base <cn=42009,ou=people,dc=myldap,dc=eltex,dc=local> with scope subtree # filter: (objectclass=*) # requesting: ALL # # 42009, people, myldap.eltex.local dn: cn=42009,ou=people,dc=myldap,dc=eltex,dc=local displayName: ivanov.ivan mail: ivanov.ivan objectClass: inetOrgPerson objectClass: top sn: 42009 telephoneNumber: 42009 uid: ivanov userPassword:: NDIwMDk= cn: 42009 # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
Проверка синхронизации
Для проверки синхронизации используйте команду:
domain/<DOMAIN>/alias/info <ADDRESS>
где:
- <DOMAIN> — имя виртуальной АТС;
- <ADDRESS> — alias абонента.
domain/test_domain/alias/info 42007
Выполнение команды до синхронизации:
domain/test_domain/alias/info 42007 Aliases in domain test_domain ┌───────┬─────────────────┬─┬─┬──────────────────────────┬────────────────────────────────┐ │Address│ Iface │A│W│ Property │ Value │ ├───────┼─────────────────┼─┼─┼──────────────────────────┼────────────────────────────────┤ │42007 │42007@test_domain│ │ │user_agent │"VP-15P/2.7.6.34 sofia-sip/1.12"│ │ │ │ │ │uid │06b4e88042702a1c │ │ │ │ │D│timezone │'UTC+07:00' │ │ │ │ │ │terminal_type │smart │ │ │ │ │ │subscriber_portal\password│abf │ │ │ │ │ │subscriber_portal\login │"42007" │ │ │ │ │D│ss\mgm\telephone │enabled │ │ │ │ │p│screening │networkProvided │ │ │ │ │ │profile │"user_default" │ │ │ │ │D│pin │"1111" │ │ │ │ │p│npi │isdnTelephony │ │ │ │ │p│ni │private │ │ │ │ │p│nai │subscriberNumber │ │ │ │ │d│media-profile │"default" │ │ │ │ │ │ldap\id │42007 │ │ │ │ │ │isIfaceActive │true │ │ │ │ │ │email │"petrov.petr" │ │ │ │ │ │displayName │42007 │ │ │ │ │p│category │ordinarySubscriber │ │ │ │ │d│access_type │access_type0 │ │ │ │ │p│access_group │all │ └───────┴─────────────────┴─┴─┴──────────────────────────┴────────────────────────────────┘
Выполнение команды после синхронизации:
domain/test_domain/alias/info 42007 Aliases in domain test_domain ┌───────┬─────────────────┬─┬─┬──────────────────────────┬────────────────────────────────┐ │Address│ Iface │A│W│ Property │ Value │ ├───────┼─────────────────┼─┼─┼──────────────────────────┼────────────────────────────────┤ │42007 │42007@test_domain│ │ │user_agent │"VP-15P/2.7.6.34 sofia-sip/1.12"│ │ │ │ │ │uid │06b4e88042702a1c │ │ │ │ │D│timezone │'UTC+07:00' │ │ │ │ │ │terminal_type │smart │ │ │ │ │ │subscriber_portal\password│abf │ │ │ │ │ │subscriber_portal\login │"42007" │ │ │ │ │D│ss\mgm\telephone │enabled │ │ │ │ │p│screening │networkProvided │ │ │ │ │ │profile │"user_default" │ │ │ │ │D│pin │"1111" │ │ │ │ │p│npi │isdnTelephony │ │ │ │ │p│ni │private │ │ │ │ │p│nai │subscriberNumber │ │ │ │ │d│media-profile │"default" │ │ │ │ │ │ldap\id │42007 │ │ │ │ │ │isIfaceActive │true │ │ │ │ │ │email │"petrov.petr" │ │ │ │ │ │displayName │petrov.petr │ │ │ │ │p│category │ordinarySubscriber │ │ │ │ │d│access_type │access_type0 │ │ │ │ │p│access_group │all │ └───────┴─────────────────┴─┴─┴──────────────────────────┴────────────────────────────────┘ Legend: A: "Is active" alias flag: *: Passive alias <Empty>: Active alias W: Where property is set: a: This is address property in domain A: This is global address property d: This is domain property D: This is default property i: This is iface property in domain g: This is global property p: This is alias'es profile's property <Empty>: This is alias property Note: * char in W column means "Can't read alias info". Error reason in value column in this case
Настройка авторизации в call-центр
Активация интеграции в КЦ задается при установке или реконфигурации пакета ecss-cc-ui.
sudo dpkg-reconfigure ecss-cc-ui
Вопросы, задаваемые при установке пакета ecss-cc-ui приведены в разделе Приложение Д. Вопросы, задаваемые при инсталляции пакетов ECSS.
Для авторизации агентов Call-центра через LDAP/AD создайте конфигурацию LDAP/AD в рамках домена, после чего на уровне настроек Call-центра укажите, через какое соединение будет происходить авторизация агентов. Для этого выполните команду:
domain/<DOMAIN>/cc/properties/set ldap_server_id <LDAP_ID>
где
- <DOMAIN> — имя виртуальной АТС;
- <LDAP_ID> — идентификатор LDAP-сервера.
domain/test_domain/cc/properties/set ldap_server_id ldap_eltex Property "ldap_server_id" successfully changed from: undefined to <<"ldap_eltex">>.
Активировуйте авторизацию через LDAP:
domain/<DOMAIN>/сс/properties/set ldap_authentication_enabled true
где
- <DOMAIN> — имя виртуальной АТС;
domain/test_domain/cc/properties/set ldap_authentication_enabled true Property "ldap_authentication_enabled" successfully changed from: false to true.
Для авторизации агента Call-центра LDAP/AD пропишите свойство ldap_username — имя учетной записи LDAP/AD:
domain/<DOMAIN>/cc/agent/set <AGENT_ID> ldap_username <login>
где
- <DOMAIN> — имя виртуальной АТС;
- <AGENT_ID> — идентификатор абонента Call-центра;
- <login> — логин от Сall-центра, используемый в LDAP.
domain/test_domain/cc/agent/set 100 ldap_username 42009 ok Configuration changes will be applied after re-login
domain/test_domain/cc/agent/info 100 ┌─────┬─────────────────────────────────────────┐ │Agent│ Properties │ ├─────┼─────────────────────────────────────────┤ │100 │agent_id <<"100">> │ │ │auto_complete true │ │ │call_recording true │ │ │check_sip_reg_when_distribute false │ │ │check_sip_reg_when_login false │ │ │description │ │ │display_name │ │ │group default │ │ │ldap_username <<"42009">>│ │ │load 1 │ │ │only_one_session true │ │ │password 1111 │ │ │pickup true │ │ │profile 103 │ │ │skills │ │ │supervisor true │ │ │working_timeout 120 min. │ └─────┴─────────────────────────────────────────┘
Перелогиньте агента СС, авторизация будет происходить по LDAP/AD. Также можно продолжать использовать для авторизации идентификатор агента СС и пароль агента СС.
Настройка авторизации в Портале абонента
Настройка через CLI
Для того чтобы аутентификация пользователей конкретной инсталляции портала абонента осуществлялась через LDAP (Active Directory), а не через собственную базу портала абонента, введите в консоли cocon следующее:
Настройте или измените параметры:
domain/<DOMAIN>/subscriber-portal/properties/set ldap_server_id <LDAP_ID>
где:
- <DOMAIN> — имя виртуальной АТС;
<LDAP_ID> — идентификатор LDAP-сервера.
domain/test_domain/subscriber-portal/properties/set ldap_server_id ldap_eltex Property "ldap_server_id" successfully changed from: ldap_test to ldap_eltex.
Активируйте авторизацию через LDAP:
domain/<DOMAIN>/subscriber-portal/properties/set ldap_authentication_enabled true
где
- <DOMAIN> — имя виртуальной АТС;
domain/test_domain/subscriber-portal/properties/set ldap_authentication_enabled true Property "ldap_authentication_enabled" successfully changed from: false to true.
Результат выполнения команды:
domain/test_domain/subscriber-portal/properties/info ┌───────────────────────────┬───────────┬──────────────────────────────────────────────────────────────────────────────────────┐ │ Property │ Domain │ Value │ ├───────────────────────────┼───────────┼──────────────────────────────────────────────────────────────────────────────────────┤ │auto_create_account │test_domain│true │ │auto_delete_account │test_domain│true │ │connection │test_domain│Host: 127.0.0.1; Database: ecss_subscribers; Login: subscribers; Password: subscribers│ │enable │test_domain│true │ │expire_time │test_domain│3600 │ │ldap_authentication_enabled│test_domain│true │ │ldap_server_id │test_domain│ldap_eltex │ │web_sp_server │test_domain│http://sp.web.ecss/ │ └───────────────────────────┴───────────┴──────────────────────────────────────────────────────────────────────────────────────┘
Задайте логин от портала абонента в настройках alias:
domain/<DOMAIN>/alias/set <address range> <iface group> <name range> subscriber_portal\login <login>
где
- <DOMAIN> — имя виртуальной АТС;
- <address range> — диапазон адресов (номеров);
- <iface group> — группа интерфейсов;
- <name range> — диапазон имен интерфейсов;
- <login> — логин от портала абонента, используемый в LDAP.
domain/test_domain/alias/set 42009 sip 42009@test_domain subscriber_portal\login 42009 There are aliases within domain test_domain affected by settings property subscriber_portal\login: 42009 <-> 06b2992e97da9a69 Legend: a: Setup alias address i: Setup alias inteface !: Setup broken. Alias allready exists *: Setup broken. Alias not exists L: Setup broken. No free subscriber licences. x: Setup broken. Unexpected error <empty>: Successfull setup
Результат выполнения команды:
domain/test_domain/alias/info 42009 sip 42009@test_domain Aliases in domain test_domain ┌───────┬─────────────────┬─┬─┬───────────────────────┬────────────────────────────────┐ │Address│ Iface │A│W│ Property │ Value │ ├───────┼─────────────────┼─┼─┼───────────────────────┼────────────────────────────────┤ │42009 │42009@test_domain│ │ │user_agent │"VP-15P/2.7.6.34 sofia-sip/1.12"│ │ │ │ │ │uid │06b020400d09f86e │ │ │ │ │D│timezone │'UTC+07:00' │ │ │ │ │ │terminal_type │smart │ │ │ │ │ │subscriber_portal\login│"42009" │ │ │ │ │D│ss\mgm\telephone │enabled │ │ │ │ │p│screening │networkProvided │ │ │ │ │ │profile │"user_default" │ │ │ │ │D│pin │"1111" │ │ │ │ │p│npi │isdnTelephony │ │ │ │ │p│ni │private │ │ │ │ │p│nai │subscriberNumber │ │ │ │ │d│media-profile │"default" │ │ │ │ │ │ldap\id │42009 │ │ │ │ │ │isIfaceActive │true │ │ │ │ │ │email │"ivanov.ivan" │ │ │ │ │ │displayName │ivanov.ivan │ │ │ │ │p│category │ordinarySubscriber │ │ │ │ │d│access_type │access_type0 │ │ │ │ │p│access_group │all │ └───────┴─────────────────┴─┴─┴───────────────────────┴────────────────────────────────┘ Legend: A: "Is active" alias flag: *: Passive alias <Empty>: Active alias W: Where property is set: a: This is address property in domain A: This is global address property d: This is domain property D: This is default property i: This is iface property in domain g: This is global property p: This is alias'es profile's property <Empty>: This is alias property Note: * char in W column means "Can't read alias info". Error reason in value column in this case
В случае использования LDAP в качестве авторизации, выставлять свойство subscriber_portal\password не нужно.
Включение авторизации через LDAP/AD в Портале абонента в web-конфигураторе.
В приложении Портал абонента ("Subscriber portal") включите LDAP/AD авторизацию:
На сервере LDAP/AD сделайте учетную запись абонента. Проверьте с данной учетной записью вход на портал абонента.
После выполнения настроек приложение "Портал абонента" готово для использования. См. раздел Портал абонента.
Настройка модификации cgpn/cdpn для установления соединения с TrueConf
Модификация cgpn/cdpn может быть востребована при установлении SIP-соединения TrueConf. Для данного типа соединения требуется передавать информацию о идентификации абонента в символьном виде (например, mikhail.svetlov@test.ru). В ECSS информация об абоненте сохраняется в виде абонентского номера (например, 2000 посылается в invite-запросе в формате 2000@test.ru). Для установления соединения с TrueConf требуется выполнить модификацию 2000 → mikhail.svetlov и в обратном направлении mikhail.svetlov → 2000.
Настройки для поддержки буквенных SIP URI
Для того чтобы SIP-адаптер начал обрабатывать символьные RURI, необходимо включить обработку символьных RURI:
/domain/<DOMAIN>/sip/properties/set non_telephone_number_allow true
domain/test_domain/sip/properties/set non_telephone_number_allow true Property "non_telephone_number_allow" successfully changed from: false to true.
Настройка сервера модификации
"Сервер модификации" — надстройка над обычным LDAP/AD-сервером, настроенным ранее. Эти параметры можно настроить только через CoCon:
/domain/<DOMAIN>/modificators/ldap/set <SERVER_NAME> internal_attribute <INTERNAL_ATTR>
/domain/<DOMAIN>/modificators/ldap/set <SERVER_NAME> external_attribute <EXTERNAL_ATTR>
/domain/<DOMAIN>/modificators/ldap/set <SERVER_NAME> cache_ttl <CACHE_TTL>
где:
- <DOMAIN> — имя виртуальной АТС;
- <SERVER_NAME> — уникальный идентификатор LDAP-сервера;
- <INTERNAL_ATTR> — это атрибут LDAP-пользователя, в котором хранится номер абонента (используется на SSW (для примера telephoneNumber)). По умолчанию отсутствует;
- <EXTERNAL_ATTR> — это атрибут LDAP-пользователя, в котором хранится символьный идентификатор абонента (использующееся за транком( для примера mail)). По умолчанию отсутствует;
- <CACHE_TTL> — время жизни кэша LDAP/AD-сервера, в секундах. По умолчанию — 500 (сек);
domain/test_domain/modificators/ldap/set ldap_eltex internal_attribute telephoneNumber LDAP server' ldap_eltex property "internal_attribute" successfully updated domain/test_domain/modificators/ldap/set ldap_eltex external_attribute mail LDAP server' ldap_eltex property "external_attribute" successfully updated domain/test_domain/modificators/ldap/set ldap_eltex cache_ttl 1000 LDAP server' ldap_eltex property "cache_ttl" successfully updated
Настройка модификации
Настройка через CoCon
Контекст модификации можно настроить через через CoCon:domain/<DOMAIN>/modificators/edit <MODIFICATION_CONTEXT>
где:
- <DOMAIN> — имя виртуальной АТС;
- <MODIFICATION_CONTEXT> — уникальное имя модификации номеров (в примере ldap);
Пример:
<?xml version="1.0" encoding="UTF-8"?>
<modificators xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="ecss_modificators.xsd" description="" name="ldap">
<in>
<rule name="in_local_calls">
<conditions/>
<actions>
<external_modification service="ldap_modification_service" id="ldap_eltex" timeout="5000" args="["cgpn","cdpn"]"/>
</actions>
<result>
<finish/>
</result>
</rule>
</in>
<out>
<rule name="out_local_calls">
<conditions/>
<actions>
<external_modification service="ldap_modification_service" id="ldap_abf" timeout="5000" args="["cgpn","cdpn"]"/>
</actions>
<result>
<finish/>
</result>
</rule>
</out>
</modificators>
Данный пример контекста модификации преобразует только вызовы с символьного RURI на символьный RURI с транка, а правило по выходу ожидает, что оба номера можно будет преобразовать, поскольку, если LDAP-сервер не сможет отобразить хоть одно из запрашиваемых полей, внешняя модификация будет провалена!
где:
- <service> — это сервис, который занимается внешней модификацией и поддерживается на данный момент лишь один: ldap_modification_service;
- <id> — это сервер для модификации, настроенный ранее (в примере ldap_eltex);
- <timeout> — время ожидания ответа;
- <args> — аргументы для сервиса внешней модификации. В данный момент в аргументах должен быть JSON список с строками cgpn и cdpn (с учетом регистра).
Далее, созданный контекст модификации выставляется на интерфейс транка:
/domain/<DOMAIN>/iface/user-set <OWNER> <GROUP> <TRUNK> modificator <MODIFICATION_CONTEXT>
Пример:
domain/test_domain/iface/user-set sip1 sip trunkA modificator ldap Property 'modificator' successfully changed to 'ldap' for interfaces: trunkA
Настройка через веб
Аналогично, модификацию можно настроить через веб:
Добавьте созданный модификатор на транк:
Кэширование
В текущий момент работает только один режим кэширования результатов внешней маршрутизации с помощью серверов LDAP/AD - only_resp. В этом режиме кэшируются только ответы на запросы в моменты инициализации вызова. Хранение кеша осуществляется с настраиваемым периодом (параметр cache_ttl выше). Есть возможность просмотра и очистки кэша с помощью следующих команд:
/domain/<DOMAIN>/modificators/ldap/cache/clean */<SERVER_NAME>
/domain/<DOMAIN>/modificators/ldap/cache/info */<SERVER_NAME>
Работа команды до запроса на LDAP-сервер:
domain/test_domain/modificators/ldap/cache/info * LDAP cache *: ┌──┬────────────────────────────────────────┬────────────────────────────────────────┬────────────────────────────────────────┐ │Id│ Internal attributes │ External attrubutes │ Created At │ ├──┼────────────────────────────────────────┼────────────────────────────────────────┼────────────────────────────────────────┤ └──┴────────────────────────────────────────┴────────────────────────────────────────┴────────────────────────────────────────┘
Работа команды после запроса на LDAP-сервер:
domain/test_domain/modificators/ldap/cache/info * LDAP cache *: ┌──────────┬────────────────────────────────────────┬────────────────────────────────────────┬────────────────────────────────────────┐ │ Id │ Internal attributes │ External attrubutes │ Created At │ ├──────────┼────────────────────────────────────────┼────────────────────────────────────────┼────────────────────────────────────────┤ │ldap_eltex│42007 │petrov.petr │2024/05/30 09:28:09 │ │ldap_eltex│42009 │ivanov.ivan │2024/05/30 09:28:09 │ └──────────┴────────────────────────────────────────┴────────────────────────────────────────┴────────────────────────────────────────┘
Работа команды после отчистки кэша:
domain/test_domain/modificators/ldap/cache/clean * LDAP cache for all successfully cleaned with result: ok. domain/test_domain/modificators/ldap/cache/info * LDAP cache *: ┌──┬────────────────────────────────────────┬────────────────────────────────────────┬────────────────────────────────────────┐ │Id│ Internal attributes │ External attrubutes │ Created At │ ├──┼────────────────────────────────────────┼────────────────────────────────────────┼────────────────────────────────────────┤ └──┴────────────────────────────────────────┴────────────────────────────────────────┴────────────────────────────────────────┘
Отображение тестового трейса:
Учетная запись абонента на LDAP-сервере: