Синхронизация пользователей: различия между версиями

Материал из Центр поддержки системы бронировании
Перейти к навигации Перейти к поиску
м (1 версия)
 
(не показано 6 промежуточных версий 2 участников)
Строка 1: Строка 1:
 
[[Категория:Функции]]
 
[[Категория:Функции]]
 +
{{Deprecated ru}}
 +
Назначение данного модуля — обеспечение взаимодействия между сторонней программой (например, системой автоматизации туроператора "САМО-тур") и Nemo в части синхронизации списка B2B-пользователей.
 +
 +
Модуль является компонентом, включаемым и отключаемым из административной части.
 +
 +
== Авторизация B2B-пользователей ==
 +
 +
Все B2B-пользователи, загруженные через модуль взаимодействия со сторонней программой, будут иметь случайным образом сгенерированный криптостойкий [[пароль]]. Механизм авторизации работает следующим образом:
 +
 +
1.Система пытается авторизовать пользователя через собственную службу авторизации.
 +
2.В случае неудачи, но присутствия в системе введенного логина, она должна попытаться авторизовать пользователя во внешней службе авторизации («САМО-тур»), при включенном компоненте взаимодействия с «САМО-тур».
 +
3.В случае неудачного опознавания пользователя выводится соответствующее сообщение и процедура может быть повторена путем повторного ввода логина и пароля.
 +
 +
Регистрация неудачных попыток входа производится только в двух случаях:
 +
*Компонент взаимодействия выключен.
 +
*Компонент взаимодействия включен и провалены обе попытки авторизации (внутренней и внешней).
 +
 +
Для сторонней авторизации пользователей в системе Nemo внешняя программа должна иметь веб-службу, основанную на WSDL определенного формата. Ссылка на веб-службу прописывается в настройках системы Nemo на странице конфигурации интеграции с внешней системой.
 +
 +
Для импортированных пользователей в Nemo имеется поле «Идентификатор внешней системы», который отвечает за сопоставление с ID пользователя в сторонней системе. Для менеджеров агентств оно равно номеру партнера (агента) во внешней системе, для пользователей — номеру пользователя в «САМО-туре».
 +
 +
Для пользователей, имеющих какое-либо значение в поле «идентификатор во внешней системе», запрещен функционал смены пароля или его восстановления по электронной почте.
 +
 +
Пример запросов и ответов на авторизацию:
 +
 +
'''Request'''
 +
<pre><?xml version="1.0" encoding="utf-8"?>
 +
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 +
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
 +
  <soap12:Body>
 +
    <getAuthorization xmlns="http://tempuri.org/">
 +
      <login>string</login>
 +
      <pass>string</pass>
 +
    </getAuthorization>
 +
  </soap12:Body>
 +
</soap12:Envelope></pre>
 +
 +
'''Response'''
 +
<pre><?xml version="1.0" encoding="utf-8"?>
 +
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 +
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
 +
  <soap12:Body>
 +
    <getAuthorizationResponse xmlns="http://tempuri.org/">
 +
      <getAuthorizationResult>
 +
        <session_id>string</session_id>
 +
        <user_id>string</user_id>
 +
        <login>string</login>
 +
        <status>string</status>
 +
      </getAuthorizationResult>
 +
    </getAuthorizationResponse>
 +
  </soap12:Body>
 +
</soap12:Envelope></pre>
 +
 +
Сервис реализует функцию «getAuthorization», на вход которой передается конструкция «getAuthorizationRequest»:
 +
 +
*login (строка) - введенный пользователем логин
 +
*pass (строка) - введенный пользователем пароль
 +
 +
Функция должна отдавать системе конструкцию getAuthorizationResponse:
 +
 +
*session_id (строка) - пустое значение
 +
*user_id (строка) - идентификатор менеджера в системе «САМО-тур»
 +
*login (строка) - логин пользователя (для контроля)
 +
*status (строка) - может иметь значения:
 +
1. adm - администратор
 +
2. mgr - менеджер
 +
3. usr - пользователь (возвращается всегда это значение)
 +
 +
== Импорт и синхронизация учетных записей ==
 +
 +
Со стороны внешней системы должно быть приложение, отправляющее в формате XML данные по учетным записям B2B-клиентов (агентств и пользователей). Со стороны Nemo имеется скрипт, который принимает XML в формате, приведенном в описании документов, передаваемых в Nemo, с ключом авторизации, определенным в Nemo в административной части модуля.
 +
 +
Передаваемые элементы с описанием учетных записей и партнеров имеют аккаунт (Account ID) во внешней системе и атрибут action, который может быть в состоянии update или delete, т.е. обновления/добавления и удаления, соответственно.
 +
 +
В административной части модуля в Nemo задается ключ авторизации для защиты от несанкционированного доступа. Значение не должно быть пустым.
 +
 +
Скрипт получает данные об обновлении и добавлении (проходят как одно и то же действие) или удалении информации по аккаунту. XML-данные могут содержать несколько элементов.
 +
 +
Описание передаваемых в Nemo XML-документов:
 +
 +
<pre><?xml version="1.0" encoding="UTF-8" ?>
 +
<changes key="ключ_авторизации">
 +
    <accounts> - список изменений по аккаунтам пользователей
 +
        <item id=3 partnerId=10 action="update" admin="1">
 +
            <login>Логин пользователя</login>
 +
        </item>
 +
        <item id=6 partnerId=15 action="update">
 +
            ...
 +
        </item>
 +
        <item id=9 partnerId=30 action="delete" />
 +
    </accounts>
 +
    <partners> - список изменений по партнерам
 +
        <item id=140 action="update">
 +
            <name>Название агентства</name>
 +
            <ofname>Официальное Название агентства</ofname>
 +
            <phone>Телефон</phone>
 +
            <tax>Форма налогообложения</tax>
 +
            <group>123</group>
 +
            <code>ABCD</item>
 +
  </partners></changes></code></pre>
 +
 +
При импорте информации об агентствах будут возвращаться следующие значения:
 +
 +
<table border="1">
 +
<tr class="row0" bgcolor="#CCCCCC">
 +
<th class="col0">Поле во внешней системе </th><th class="col1"> Путь к элементу xml </th><th class="col2"> Тип данных </th><th class="col3"> Сопоставляемое поле в Nemo </th><th class="col4"> Примечание </th>
 +
 +
</tr>
 +
<tr class="row1">
 +
<td class="col0">Идентификатор партнера</td><td class="col1">/changes/partners/item[@id]</td><td class="col2 leftalign">Целое число </td><td class="col3 leftalign">Идентификатор во внешней системе для менеджера / администратора </td><td class="col4"></td>
 +
</tr>
 +
<tr class="row2">
 +
<td class="col0">Название юридического лица</td><td class="col1">/changes/partners/item/ofname</td><td class="col2">Строка</td><td class="col3">Полное официальное название юридического лица </td><td class="col4">Необходимо для выписки счетов юридическими лицами</td>
 +
 +
</tr>
 +
<tr class="row3">
 +
<td class="col0">Сокращенное название</td><td class="col1">/changes/partners/item/name</td><td class="col2">Строка</td><td class="col3 leftalign">Имя агентства </td><td class="col4"></td>
 +
</tr>
 +
<tr class="row4">
 +
<td class="col0">Код агентства</td><td class="col1">/changes/partners/item/code</td><td class="col2">Строка</td><td class="col3">Используется при создании логина администратора</td><td class="col4"></td>
 +
 +
</tr>
 +
<tr class="row5">
 +
<td class="col0">Номер группы в самотуре</td><td class="col1">/changes/partners/item/group</td><td class="col2">Целое число, либо пусто</td><td class="col3 leftalign">На основании таблицы сопоставлений (см. ниже) определяется, к какой группе агентство принадлежит в Nemo </td><td class="col4"></td>
 +
</tr>
 +
<tr class="row6">
 +
<td class="col0">Форма налогообложения</td><td class="col1">/changes/partners/item/tax</td><td class="col2">Целое число, равное идентификатору во внешней системе</td><td class="col3"></td><td class="col4"></td>
 +
</tr>
 +
</table>
 +
 +
Для каждого возвращенного агентства Nemo проверяет наличие его в своей базе. Если [[агентство]] не найдено, то создается новое, для него создается менеджер (админ) с логином ABCD-1234, где ABCD – буквенный идентификатор партнера во внешней системе, 1234 — id партнера во внешней системе. Пароль генерируется случайный и криптостойкий.
 +
 +
Если агентство найдено, то в случае необходимости производится обновление всех полей на основании данных из внешней системы. Если изменился буквенный код агентства, то Nemo переименовывает менеджера в соответствии с новым кодом. При импорте информации о пользователях агентств в Nemo будут посылаться следующие поля:
 +
 +
<table border="1">
 +
<tr class="row0" bgcolor="#CCCCCC">
 +
<th class="col0">Поле во внешней системе</th><th class="col1">Путь к элементу xml</th><th class="col2">Тип данных</th><th class="col3">Сопоставляемое поле в Nemo</th><th class="col4">Примечание</th>
 +
 +
</tr>
 +
<tr class="row1">
 +
<td class="col0">Идентификатор пользователя</td><td class="col1">/changes/accounts/item[@id]</td><td class="col2">Целое число</td><td class="col3">Идентификатор внешней системы</td><td class="col4">Храним как дополнительное поле </td>
 +
</tr>
 +
<tr class="row2">
 +
<td class="col0">Идентификатор партнера</td><td class="col1">/changes/accounts/item[@partnerId]</td><td class="col2">Целое число</td><td class="col3">Идентификатор внешней системы менеджера агентства</td><td class="col4"></td>
 +
 +
</tr>
 +
<tr class="row3">
 +
<td class="col0">Логин</td><td class="col1">/changes/accounts/item/login</td><td class="col2">Строка</td><td class="col3">Логин пользователя</td><td class="col4"></td>
 +
</tr>
 +
<tr class="row4">
 +
<td class="col0">Администратор</td><td class="col1">/changes/accounts/item[@admin]</td><td class="col2">0 - нет, 1 - да</td><td class="col3 leftalign">Эксперт по бронированию </td><td class="col4"></td>
 +
 +
</tr>
 +
</table>
 +
 +
Для каждого возвращенного пользователя Nemo проверяет наличие его в своей базе. Если пользователь не найден, то создается новый. Пароль генерируется случайный и криптостойкий.
 +
 +
Если [[пользователь]] найден, то в случае необходимости производится обновление всех полей на основании данных из внешней системы. При запросе на удаление пользователя, в Nemo указанный логин удаляться не будет в целях сохранения целостности старых данных, а просто помечается как удаленный, и логин переименовывается и становится вида [логин_пользователя]_X_[числовой идентификатор_пользователя в Само].
 +
 +
<pre><item id=[идентификатор] action="delete" /></pre>
 +
 +
== Таблица сопоставлений групп ==
 +
 +
В административной части Nemo надо создать отдельную страницу, на которой можно сопоставить имеющиеся  [[Пользователь#Группы в Nemo|группы в Nemo]] номерам групп в САМО-тур (поле group в XML). Выводится список существующих групп для текущего (корневого) агентства.
 +
 +
== См. также ==
 +
*[[Пользователь]]<br>
 +
*[[Авторизация]]<br>
 +
*[[Пароль]]

Текущая версия на 16:08, 12 февраля 2015

Nemo logo 300 45.png

Мы можем предложить вам что-нибудь получше!

Здесь идет речь об устаревшей или замороженной функциональности.

Назначение данного модуля — обеспечение взаимодействия между сторонней программой (например, системой автоматизации туроператора "САМО-тур") и Nemo в части синхронизации списка B2B-пользователей.

Модуль является компонентом, включаемым и отключаемым из административной части.

Авторизация B2B-пользователей

Все B2B-пользователи, загруженные через модуль взаимодействия со сторонней программой, будут иметь случайным образом сгенерированный криптостойкий пароль. Механизм авторизации работает следующим образом:

1.Система пытается авторизовать пользователя через собственную службу авторизации. 2.В случае неудачи, но присутствия в системе введенного логина, она должна попытаться авторизовать пользователя во внешней службе авторизации («САМО-тур»), при включенном компоненте взаимодействия с «САМО-тур». 3.В случае неудачного опознавания пользователя выводится соответствующее сообщение и процедура может быть повторена путем повторного ввода логина и пароля.

Регистрация неудачных попыток входа производится только в двух случаях:

  • Компонент взаимодействия выключен.
  • Компонент взаимодействия включен и провалены обе попытки авторизации (внутренней и внешней).

Для сторонней авторизации пользователей в системе Nemo внешняя программа должна иметь веб-службу, основанную на WSDL определенного формата. Ссылка на веб-службу прописывается в настройках системы Nemo на странице конфигурации интеграции с внешней системой.

Для импортированных пользователей в Nemo имеется поле «Идентификатор внешней системы», который отвечает за сопоставление с ID пользователя в сторонней системе. Для менеджеров агентств оно равно номеру партнера (агента) во внешней системе, для пользователей — номеру пользователя в «САМО-туре».

Для пользователей, имеющих какое-либо значение в поле «идентификатор во внешней системе», запрещен функционал смены пароля или его восстановления по электронной почте.

Пример запросов и ответов на авторизацию:

Request

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <getAuthorization xmlns="http://tempuri.org/">
      <login>string</login>
      <pass>string</pass>
    </getAuthorization>
  </soap12:Body>
</soap12:Envelope>

Response

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <getAuthorizationResponse xmlns="http://tempuri.org/">
      <getAuthorizationResult>
        <session_id>string</session_id>
        <user_id>string</user_id>
        <login>string</login>
        <status>string</status>
      </getAuthorizationResult>
    </getAuthorizationResponse>
  </soap12:Body>
</soap12:Envelope>

Сервис реализует функцию «getAuthorization», на вход которой передается конструкция «getAuthorizationRequest»:

  • login (строка) - введенный пользователем логин
  • pass (строка) - введенный пользователем пароль

Функция должна отдавать системе конструкцию getAuthorizationResponse:

  • session_id (строка) - пустое значение
  • user_id (строка) - идентификатор менеджера в системе «САМО-тур»
  • login (строка) - логин пользователя (для контроля)
  • status (строка) - может иметь значения:

1. adm - администратор 2. mgr - менеджер 3. usr - пользователь (возвращается всегда это значение)

Импорт и синхронизация учетных записей

Со стороны внешней системы должно быть приложение, отправляющее в формате XML данные по учетным записям B2B-клиентов (агентств и пользователей). Со стороны Nemo имеется скрипт, который принимает XML в формате, приведенном в описании документов, передаваемых в Nemo, с ключом авторизации, определенным в Nemo в административной части модуля.

Передаваемые элементы с описанием учетных записей и партнеров имеют аккаунт (Account ID) во внешней системе и атрибут action, который может быть в состоянии update или delete, т.е. обновления/добавления и удаления, соответственно.

В административной части модуля в Nemo задается ключ авторизации для защиты от несанкционированного доступа. Значение не должно быть пустым.

Скрипт получает данные об обновлении и добавлении (проходят как одно и то же действие) или удалении информации по аккаунту. XML-данные могут содержать несколько элементов.

Описание передаваемых в Nemo XML-документов:

<?xml version="1.0" encoding="UTF-8" ?>
<changes key="ключ_авторизации">
    <accounts> - список изменений по аккаунтам пользователей
        <item id=3 partnerId=10 action="update" admin="1">
            <login>Логин пользователя</login>
        </item>
        <item id=6 partnerId=15 action="update">
            ...
        </item>
        <item id=9 partnerId=30 action="delete" />
    </accounts>
    <partners> - список изменений по партнерам
        <item id=140 action="update">
            <name>Название агентства</name>
            <ofname>Официальное Название агентства</ofname>
            <phone>Телефон</phone>
            <tax>Форма налогообложения</tax>
            <group>123</group>
            <code>ABCD</item>
  </partners></changes></code>

При импорте информации об агентствах будут возвращаться следующие значения:

Поле во внешней системе Путь к элементу xml Тип данных Сопоставляемое поле в Nemo Примечание
Идентификатор партнера/changes/partners/item[@id]Целое число Идентификатор во внешней системе для менеджера / администратора
Название юридического лица/changes/partners/item/ofnameСтрокаПолное официальное название юридического лица Необходимо для выписки счетов юридическими лицами
Сокращенное название/changes/partners/item/nameСтрокаИмя агентства
Код агентства/changes/partners/item/codeСтрокаИспользуется при создании логина администратора
Номер группы в самотуре/changes/partners/item/groupЦелое число, либо пустоНа основании таблицы сопоставлений (см. ниже) определяется, к какой группе агентство принадлежит в Nemo
Форма налогообложения/changes/partners/item/taxЦелое число, равное идентификатору во внешней системе

Для каждого возвращенного агентства Nemo проверяет наличие его в своей базе. Если агентство не найдено, то создается новое, для него создается менеджер (админ) с логином ABCD-1234, где ABCD – буквенный идентификатор партнера во внешней системе, 1234 — id партнера во внешней системе. Пароль генерируется случайный и криптостойкий.

Если агентство найдено, то в случае необходимости производится обновление всех полей на основании данных из внешней системы. Если изменился буквенный код агентства, то Nemo переименовывает менеджера в соответствии с новым кодом. При импорте информации о пользователях агентств в Nemo будут посылаться следующие поля:

Поле во внешней системеПуть к элементу xmlТип данныхСопоставляемое поле в NemoПримечание
Идентификатор пользователя/changes/accounts/item[@id]Целое числоИдентификатор внешней системыХраним как дополнительное поле
Идентификатор партнера/changes/accounts/item[@partnerId]Целое числоИдентификатор внешней системы менеджера агентства
Логин/changes/accounts/item/loginСтрокаЛогин пользователя
Администратор/changes/accounts/item[@admin]0 - нет, 1 - даЭксперт по бронированию

Для каждого возвращенного пользователя Nemo проверяет наличие его в своей базе. Если пользователь не найден, то создается новый. Пароль генерируется случайный и криптостойкий.

Если пользователь найден, то в случае необходимости производится обновление всех полей на основании данных из внешней системы. При запросе на удаление пользователя, в Nemo указанный логин удаляться не будет в целях сохранения целостности старых данных, а просто помечается как удаленный, и логин переименовывается и становится вида [логин_пользователя]_X_[числовой идентификатор_пользователя в Само].

<item id=[идентификатор] action="delete" />

Таблица сопоставлений групп

В административной части Nemo надо создать отдельную страницу, на которой можно сопоставить имеющиеся группы в Nemo номерам групп в САМО-тур (поле group в XML). Выводится список существующих групп для текущего (корневого) агентства.

См. также