В разделе приведены описания интеграции AD/ldap, которая отвечает за следующие задачи и функции:

Создание и настройка интеграции ECSS10

Active Directory

domain/<DOMAIN>/ldap/declare <ID> <TYPE> <HOST> <PORT> <DC_OR_DOMAIN>

где:

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/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/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/test_domain/ldap/check-connection ad_test 
Connection successful

5. Настройка синхронизации учетных данных.

Для синхронизации учетных данных:

Команда синхронизации SIP-аккаунта с пользователем AD:

domain/<DOMAIN>/ldap/sync/force <ID> <ADDRESS>

где:


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/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-серверов есть следующие поля:

1. Настройка интеграции.

domain/<DOMAIN>/ldap/declare <ID> <TYPE> <HOST> <PORT> <DC_OR_DOMAIN>

где:

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

Необходимо изменить несколько строк:

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

%% 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-сервере отобразяться следующие директории: 

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

Для синхронизации учетных данных:

domain/<DOMAIN>/ldap/sync/properties/set --ldap_to_alias_settings_map  <LDAP parametr> <alias parametr> <type of parameter>

где:


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/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/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/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/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/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/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/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/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/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>

где:

Пример:

<?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-сервер не сможет отобразить хоть одно из запрашиваемых полей, внешняя модификация будет провалена!

где:

Далее, созданный контекст модификации выставляется на интерфейс транка:

/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-сервере: