Авторизация пользователей из внешних систем: различия между версиями
м (→Особенности авторизации из внешних систем) |
|||
(не показано 9 промежуточных версий этого же участника) | |||
Строка 2: | Строка 2: | ||
Система Nemo позволяет обращаться к ней как базе пользователей для авторизации из других систем (например форума на сайте, собственного ПО компании и т.п) | Система Nemo позволяет обращаться к ней как базе пользователей для авторизации из других систем (например форума на сайте, собственного ПО компании и т.п) | ||
− | Для этого нужно | + | Для этого нужно сделать следующее: |
− | + | необходимо на адрес вида '''https://domain/api__external_authorization''' отправить POST-запрос в стандартном формате ответа об авторизуемом пользователе. При получении запроса система Nemo.Travel обрабатывает полученные данные, авторизует пользователя и перенаправляет пользователя на страницу поиска авиабилетов. В случае неудачной авторизации, у пользователя появится возможность стандартной авторизации по номеру телефона. | |
+ | <br> | ||
+ | Запрос передачи авторизуемого пользователя | ||
+ | Системе Nemo.Travel можно передать информацию об авторизованном во внешней системе пользователе путем отправки на URL https://domain/api__external_authorization POST запроса в следующем формате: | ||
− | <pre>?xml version ='1.0' encoding ='UTF-8' ?> | + | * POST - параметр |
+ | |||
+ | * Пример значения параметра: | ||
+ | |||
+ | <pre>Request | ||
+ | |||
+ | { | ||
+ | |||
+ | "user": { | ||
+ | "id": 12, | ||
+ | "email": "test@test.ru", | ||
+ | "phone": "79123456789", | ||
+ | "firstName": "Konstantin", | ||
+ | "lastName": "Konstantinov", | ||
+ | "middleName": "Konstantinovich", | ||
+ | "birthDate": "1990-11-15", | ||
+ | "nationality": "RU", | ||
+ | "gender": "F", | ||
+ | "docNumber": "6522232232", | ||
+ | "loyaltyNumber": "1231233213223" | ||
+ | }, | ||
+ | "passengers": [{ | ||
+ | "id": 433, | ||
+ | "firstName": "Alexander", | ||
+ | "lastName": "Alexandrov", | ||
+ | "middleName": "Alexandrovich", | ||
+ | "birthDate": "1990-10-05", | ||
+ | "nationality": "RU", | ||
+ | "gender": "M", | ||
+ | "docNumber": "7844454454", | ||
+ | "loyaltyNumber": "1231223213223" | ||
+ | }] | ||
+ | }</pre> | ||
+ | |||
+ | <!--> <pre>?xml version ='1.0' encoding ='UTF-8' ?> | ||
<definitions name='Authorization' | <definitions name='Authorization' | ||
targetNamespace='http://example.org/Authorization' | targetNamespace='http://example.org/Authorization' | ||
Строка 55: | Строка 92: | ||
</port> | </port> | ||
</service> | </service> | ||
− | </definitions></pre> | + | </definitions></pre> </!--> |
+ | |||
+ | * Пример расчета hash на языке PHP: | ||
+ | |||
+ | <pre>$hash = hash('sha256', $request . $salt);</pre> | ||
+ | |||
+ | $request - значение POST-параметра из запроса, $salt - секретная строка, известная только получателю и отправителю. | ||
+ | |||
+ | В настройках Nemo.Travel должна быть включена возможность авторизации во внешней системе и задана секретная строка. | ||
+ | |||
+ | Секретное слово для генерации хеша будет отдельно выдано специалистами технической поддержки. | ||
+ | |||
+ | ==Особенности авторизации из внешних систем== | ||
+ | |||
+ | * Привязка пользователей идет по домену. Если необходимо добавить пользователей в корневое агентство, то запросы будут идти на домен: | ||
+ | '''домен_аг-ва/tests/nsa/frame.php''' | ||
+ | Если же нужно авторизовывать пользователей для субагента, то необходимо прописать данному субагенту домен в настройках: '''Управление сайтом -> Домены и протоколы''' | ||
+ | в поле: '''Доменное имя сайта для загрузки настроек''' | ||
+ | |||
+ | * Чтобы после авторизации пользователя перенаправлять его не на страницу поиска, а на любую другую выбранную страницу, необходимо указать в json после хеша домен перенаправления. | ||
+ | |||
+ | * Авторизация пользователя происходит по его ID. Для добавления нового пользователя, которого нет в системе Nemo, нужно также указать его ID. | ||
+ | |||
+ | * Если данные пользователя переданы частично, они останутся без изменений до передачи новых данных. | ||
+ | |||
+ | * Если часть данных данных отличается от имеющихся в системе Nemo, то они перезапишутся. | ||
== См. также == | == См. также == | ||
*[[Авторизация]] | *[[Авторизация]] | ||
*[[Пользователь]] | *[[Пользователь]] |
Версия 17:28, 12 февраля 2020
Система Nemo позволяет обращаться к ней как базе пользователей для авторизации из других систем (например форума на сайте, собственного ПО компании и т.п)
Для этого нужно сделать следующее:
необходимо на адрес вида https://domain/api__external_authorization отправить POST-запрос в стандартном формате ответа об авторизуемом пользователе. При получении запроса система Nemo.Travel обрабатывает полученные данные, авторизует пользователя и перенаправляет пользователя на страницу поиска авиабилетов. В случае неудачной авторизации, у пользователя появится возможность стандартной авторизации по номеру телефона.
Запрос передачи авторизуемого пользователя
Системе Nemo.Travel можно передать информацию об авторизованном во внешней системе пользователе путем отправки на URL https://domain/api__external_authorization POST запроса в следующем формате:
- POST - параметр
- Пример значения параметра:
Request { "user": { "id": 12, "email": "test@test.ru", "phone": "79123456789", "firstName": "Konstantin", "lastName": "Konstantinov", "middleName": "Konstantinovich", "birthDate": "1990-11-15", "nationality": "RU", "gender": "F", "docNumber": "6522232232", "loyaltyNumber": "1231233213223" }, "passengers": [{ "id": 433, "firstName": "Alexander", "lastName": "Alexandrov", "middleName": "Alexandrovich", "birthDate": "1990-10-05", "nationality": "RU", "gender": "M", "docNumber": "7844454454", "loyaltyNumber": "1231223213223" }] }
- Пример расчета hash на языке PHP:
$hash = hash('sha256', $request . $salt);
$request - значение POST-параметра из запроса, $salt - секретная строка, известная только получателю и отправителю.
В настройках Nemo.Travel должна быть включена возможность авторизации во внешней системе и задана секретная строка.
Секретное слово для генерации хеша будет отдельно выдано специалистами технической поддержки.
Особенности авторизации из внешних систем
- Привязка пользователей идет по домену. Если необходимо добавить пользователей в корневое агентство, то запросы будут идти на домен:
домен_аг-ва/tests/nsa/frame.php Если же нужно авторизовывать пользователей для субагента, то необходимо прописать данному субагенту домен в настройках: Управление сайтом -> Домены и протоколы в поле: Доменное имя сайта для загрузки настроек
- Чтобы после авторизации пользователя перенаправлять его не на страницу поиска, а на любую другую выбранную страницу, необходимо указать в json после хеша домен перенаправления.
- Авторизация пользователя происходит по его ID. Для добавления нового пользователя, которого нет в системе Nemo, нужно также указать его ID.
- Если данные пользователя переданы частично, они останутся без изменений до передачи новых данных.
- Если часть данных данных отличается от имеющихся в системе Nemo, то они перезапишутся.