В разделе приведены описания интеграции 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
CODE

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"}.

В результате файл отобразится следующим образом:

в примере distinguished name " dc=myldap,dc=eltex,dc=local "
%% 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 
CODE

После перезагрузки 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 файле.

Пример:

user.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
CODE

Вопросы, задаваемые при установке пакета 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>
CODE

Данный пример контекста модификации преобразует только вызовы с символьного 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-сервере: