Тип статьи | Инструкция по настройке кроос-авторизации между двумя системами с ролевой моделью | |||||
---|---|---|---|---|---|---|
Компетенции | JS, HTML, PHP, SSH | |||||
Необходимые права | root, администратор платформы | |||||
Версия платформы | 2.26 | |||||
Статус |
|
| ||
Сложность | Сложно | |
---|---|---|
Полезные ссылки | ||
Дополнительные сведения | пример кастомной авторизации, предполагает самостоятельное исследование и доработку |
📋 Подробное описание
Механизм внешней аторизации предполагается формирование специального токена на стороне внешней системы, настройку кросс-авторизационного файла в платформе и внедрение формы с post запросом для редиректа в портал без авторизации.
...
Обязательные поля в payload:
Наименование поля | Тип | Описание | Примечание |
username | string | Имя пользователя | Обязательно для заполнения |
section | string | Идентификатор внешней системы. Используется для избежания коллизий между пользователями в случае, если есть несколько внешних систем и одно и то же имя пользователя может быть в разных внешних системах. | Обязательно для заполнения |
userRoles | Массив string. Также возможен список integer. | Массив-список идентификаторов ролей | Непустой массив. Обязательно должно быть передано хоть одно значение. Если список передается в формате integer, происходит неявное преобразование в string. |
iat | String | Время в формате Unix Time, определяющее момент, когда токен был создан. | Обязательно для заполнения |
exp | String | Время в формате Unix Time, определяющее момент, когда токен станет не валидным (expiration). | Обязательно для заполнения |
iss | string | Чувствительный к регистру URI, который является уникальным идентификатором стороны, генерирующей токен (issuer). | Должен быть корректный URI |
Помимо обязательных полей, токен также может содержать необязательные поля – детали описаны в разделе «Динамические права доступа при кросс-авторизации».
...
Конфигурационный файл хранится в виде JSON объекта и содержит следующие поля:
|
|
|
|
issuer | string, должен быть корректный URI | Чувствительный к регистру URI внешней системы, которая является уникальным идентификатором стороны, генерирующей токен | Обязательно для заполнения. |
jwtKey | string | Секретный ключ для алгоритма HMAC. Его знают два клиента – внешняя система и платформа Visiology | Обязательно для заполнения. |
rolesMapping | Массив значений { “id”: string, “name”:string } | Маппинг-соотношение внешних ролей пользователя к внутренним ролям системы | Обязательно для заполнения. |
attributeFilters | Массив значений string | Перечень атриубтов, по которым предпологается фильтрация на источнике данных ViQube. | Обязательно для заполнения. Сам массив может быть пустым – содержать 0 элементов |
Файл для редиректа
Блок кода |
---|
<!DOCTYPE html> <html><head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> </head><body></body> <script> var url = 'http://visiologyServer/idsrv/ExternalAccount/Login'; var form = $('<form action="' + url + '" method="post" >' + '<input type="hidden" name="token" value="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InNpZG9yb3YiLCJzZWN0aW9uIjoic3lzdGVtIiwidXNlclJvbGVzIjpbMTAxLDEwMl0sImlhdCI6MTU5OTgzNjkyMiwiZXhwIjoxNTk5OTk2OTIyLCJpc3MiOiJodHRwczovL2JpLmV4dGVybmFsU3lzdGVtLnJ1In0.lZJMEluzmnM6lZ6qfDqnA3b1TEJMmT8_PIzTGM-qTuA" />' + '</form>'); $('body').append(form); form.submit(); </script> </html> |
...
Блок кода |
---|
location / {
if ($http_referer !~ ^http://joomla.test.com) {
return 301 /viewer?dashboardGuid=25c2b3c35dcf450689ed0e462f38461f;
}
proxy_pass $portal_url;
} |
...