НАЧАЛО >> Авторизация пользователей >> Прозрачная авторизация из внешних систем📄 Скачать в DOCX
Прозрачная авторизация позволяет внешней системе открыть защищенную страницу ИРБИС 128 по ссылке без ручного ввода пароля пользователем. В ссылку передаются логин, имя ключа, время формирования ссылки и подпись, рассчитанная по секретному ключу.
Такой вход проходит через общий механизм модуля Authorisation: после успешной проверки подписи система находит запись пользователя в базе пользователей, устанавливает обычный сессионный контекст и загружает контекст АРМ.
Ключи проверяются модулем Authorisation. В настройках модуля используется список transparentAuthKeys - Настройка прозрачной авторизации из внешних систем.
| Параметр | Назначение |
|---|---|
Имя ключа |
Человекочитаемое название записи ключа. |
Мнемоническое имя ключа |
Значение параметра I128FAuthKeyName, которое передается во внешней ссылке. |
Ключевая строка |
Секретная строка для расчета подписи. В ссылку она не передается. |
Срок жизни ссылки |
Количество секунд, в течение которых ссылка считается действительной. Значение по умолчанию - 300. |
Для каждой внешней системы или рассылки рекомендуется использовать отдельную запись ключа. При смене ключа нужно одновременно обновить настройку в Authorisation и во внешней системе, которая формирует ссылки.
Если защищенные ссылки формирует модуль Iri, в его настройках должны быть заполнены параметры transparentAuthKeyName и transparentAuthKey. Значение transparentAuthKeyName должно совпадать с мнемоническим именем ключа в Authorisation, а transparentAuthKey - с ключевой строкой той же записи.
Внешняя система добавляет к целевому адресу следующие параметры:
| Параметр | Значение |
|---|---|
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>
При открытии ссылки модуль Authorisation выполняет проверку в общем процессе входа:
CheckOnline обнаруживает параметр I128FAuth и передает I128FAuth и I128FAuthPass в LoginFunc.LoginFunc первым способом вызывает authTransparent.authTransparent находит запись пользователя в базе пользователей по loginPrefix и значению I128FAuth.authTransparent выбирает ключ по I128FAuthKeyName, пересчитывает подпись и сравнивает ее с I128FAuthPass.I128FAuthTime отличается от текущего времени сервера меньше чем на срок жизни ключа, вход считается успешным и для пользователя устанавливается обычный сессионный контекст.Если логин, имя ключа, подпись или срок действия не проходят проверку, прозрачная авторизация не выполняется.
I128FAuth действительно находится в базе пользователей через текущий loginPrefix.Authorisation и во внешней системе, которая формирует ссылки. Для Iri это параметры transparentAuthKeyName и transparentAuthKey.