Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Тип статьи

Инструкция по настройке кроос-авторизации между двумя системами с ролевой моделью

Компетенции

JS, HTML, PHP, SSH

Необходимые права

root, администратор платформы

Версия платформы

2.26

Статус

Статус
colourYellow
title

Черновик

БЕТА

Сложность(синяя звезда)

Сложно

Полезные ссылки

Дополнительные сведения

пример кастомной авторизации, предполагает самостоятельное исследование и доработку

📋 Подробное описание

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

...