Общие сведения
Reverse Proxy – технология подключения веб-приложений к механизмам SSO и MFA, предоставляемым Avanpost FAM. Данный механизм предназначен для использования в ситуациях, когда требуется подключить к системе единой аутентификации унаследованное веб-приложение без поддержки стандартных протоколов OpenID Connect/OAuth, SAML либо RADIUS.
В режиме Reverse Proxy система SSO выступает в роли посредника (прокси-сервера), с которым взаимодействует пользователь, и который решает за пользователя задачу аутентификации и взаимодействия с веб-сервером непосредственно приложения.
Имеются следующие способы аутентификации, выполняемой сервером Avanpost FAM за пользователя:
- Без аутентификации – в этом случае система работает как обычный прокси-сервер, проксируя запросы пользователя на сервер без изменений. Дополнительных настроек не предполагается.
- Базовый – используется механизм HTTP Basic аутентификации согласно RFC 7617. Дополнительных настроек не предполагается.
- Пользовательский скрипт – используется механизм аутентификации с использованием JavaScript-сценария аутентификации.
- Форма – используется механизм аутентификации посредством эмуляции отправки HTTP Web Form.
Структура скрипта аутентификации
Для работы с использованием данного механизма требуется разработать и отладить скрипт аутентификации на языке JavaScript. Для разработки данного скрипта желательно обладать базовыми навыками программирования.
В окружении скрипта присутствуют следующие JavaScript-объекты:
Объект | Метод/свойство | Пример вызова | Назначение |
---|---|---|---|
context | GetCredentials() | credentials = context.GetCredentials(); | Вернуть объект credentials |
Send() | var response = context.Send({ url: "https://map.demo.avanpost.ru/api/auth", method: 'GET', headers: { Accept: ['application/json; text/html'], } }) | Отправить синхронный HTTP-запрос и вернуть результат | |
SetCookies( ) | context.SetCookies([ { "Name": "refresh_token", "Value": "Value" }, ) | Установить коллекцию Cookies | |
credentials | Username | Любая строковая операция | Свойство, содержащее имя учётной записи пользователя в приложении |
Password | Любая строковая операция | Свойство, содержащее пароль учётной записи пользователя в приложении |
Пример скрипта аутентификации, выполняющего запрос на аутентификацию и подстановку данных в хранилище Cookies:
credentials = context.GetCredentials(); var loginUrl = 'https://map.demo.avanpost.ru/api/auth' + '?' + 'username=' + credentials.Username + '&password=' + encodeURIComponent(credentials.Password); var response = context.Send( { url: loginUrl, method: 'GET', headers: { Accept: ['application/json; text/html'], } }) var jsonObject = JSON.parse(response.body); context.SetCookies(response.cookies); context.SetCookies([ { "Name": "refresh_token", "Value": jsonObject.refresh_token }, { "Name": "access_token", "Value": jsonObject.access_token } ]);