В разделе приведены описания интеграции 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-соединения;
- connection-check-timeout - периодическая проверка соединения между SSW и LDAP/AD server диапазон значений : 0..180 min((0 - no check) значение по умолчанию 1min).
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 │ │ │ │ │connection_check_timeout: 1 │ └────────────────────────────────┴──┴──────────────────────────────────────────────────────┴───────────────────────────────────────────────────────────────────────────────────────┘ 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.
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_eltex" 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-сервере:













