Прозрачная авторизация из внешних систем


НАЧАЛО >> Авторизация пользователей >> Прозрачная авторизация из внешних систем📄 Скачать в DOCX


Прозрачная авторизация позволяет внешней системе открыть защищенную страницу ИРБИС 128 по ссылке без ручного ввода пароля пользователем. В ссылку передаются логин, имя ключа, время формирования ссылки и подпись, рассчитанная по секретному ключу.

Такой вход проходит через общий механизм модуля Authorisation: после успешной проверки подписи система находит запись пользователя в базе пользователей, устанавливает обычный сессионный контекст и загружает контекст АРМ.

1. Настройка ключей

Ключи проверяются модулем Authorisation. В настройках модуля используется список transparentAuthKeys - Настройка прозрачной авторизации из внешних систем.

Параметр Назначение
Имя ключа Человекочитаемое название записи ключа.
Мнемоническое имя ключа Значение параметра I128FAuthKeyName, которое передается во внешней ссылке.
Ключевая строка Секретная строка для расчета подписи. В ссылку она не передается.
Срок жизни ссылки Количество секунд, в течение которых ссылка считается действительной. Значение по умолчанию - 300.

Для каждой внешней системы или рассылки рекомендуется использовать отдельную запись ключа. При смене ключа нужно одновременно обновить настройку в Authorisation и во внешней системе, которая формирует ссылки.

Если защищенные ссылки формирует модуль Iri, в его настройках должны быть заполнены параметры transparentAuthKeyName и transparentAuthKey. Значение transparentAuthKeyName должно совпадать с мнемоническим именем ключа в Authorisation, а transparentAuthKey - с ключевой строкой той же записи.

2. Параметры ссылки

Внешняя система добавляет к целевому адресу следующие параметры:

Параметр Значение
I128FAuth Логин или другое значение, по которому запись пользователя находится в базе пользователей через префикс loginPrefix.
I128FAuthPass Подпись авторизации.
I128FAuthKeyName Мнемоническое имя ключа из настройки transparentAuthKeys.
I128FAuthTime Время формирования ссылки в формате Unix time.

Подпись рассчитывается без разделителей:

I128FAuthPass = md5(I128FAuth . md5(secret) . I128FAuthTime)

Где secret - ключевая строка из выбранной записи transparentAuthKeys.

Пример структуры ссылки:

?id=EC/Show&base[]=IBIS&o=Search&orsrc[]=%22I=123%22&I128FAuth=<login>&I128FAuthPass=<signature>&I128FAuthKeyName=<key_name>&I128FAuthTime=<unix_time>

3. Проверка входа

При открытии ссылки модуль Authorisation выполняет проверку в общем процессе входа:

  1. CheckOnline обнаруживает параметр I128FAuth и передает I128FAuth и I128FAuthPass в LoginFunc.
  2. LoginFunc первым способом вызывает authTransparent.
  3. authTransparent находит запись пользователя в базе пользователей по loginPrefix и значению I128FAuth.
  4. authTransparent выбирает ключ по I128FAuthKeyName, пересчитывает подпись и сравнивает ее с I128FAuthPass.
  5. Если I128FAuthTime отличается от текущего времени сервера меньше чем на срок жизни ключа, вход считается успешным и для пользователя устанавливается обычный сессионный контекст.

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

4. Практические рекомендации