Поддержка JWT-токенов в платформе
Упрощённо говоря, JWT-токен – это JSON-структура, в поля которой записана вся необходимая для аутентификации информация (кем и кому выдан токен, время жизни токена, в каких приложениях этот токен может быть использован для аутентификации и т.д.)
Разработчикам нет необходимости изучать детали структуры JWT-токена – во встроенном языке будет доступен объект ТокенДоступа , свойства которого имеют понятные имена (см. примеры ниже).
Для поддержки JWT-токенов в платформе реализовано следующее:
-
Во встроенном языке можно создавать токены доступа и заполнять их свойства нужными значениями. Перед отправкой для аутентификации токен должен быть подписан одним из 12 алгоритмов подписи токенов, поддерживаемых платформой. Для подписи токена нужно также указать ключ подписи. Ключ подписи обычно генерируется криптопровайдером; меняется он, как правило, редко, раз в несколько лет; хранить его можно, например, в константах конфигурации (как в примере ниже).
ТокенДоступа = Новый ТокенДоступа;
ТокенДоступа.Эмитент = «ERP»;
ТокенДоступа.Получатели.Добавить(«ДО»);
ТокенДоступа.ВремяСоздания = ТекущаяУниверсальнаяДата() — Дата(1970,1,1,0,0,0);
ТокенДоступа.ВремяЖизни = 3600;
КлючПодписи = Константы.КлючПодписи.Получить();
ТокенДоступа.Подписать(АлгоритмПодписиТокенаДоступа.HS256, КлючПодписи); -
Информационным базам, HTTP и Web сервисам через параметр запроса «AccessToken» или в заголовке «Authorization» можно передавать токен доступа в формате Base64URL . Токен доступа при участии в строковых операциях автоматически конвертируется в строку в формате Base64URL.
Например:Запрос = Новый HTTPЗапрос(«http://example.com/hs/testService?AccessToken=» + ТокенДоступа);
Или
Запрос = Новый HTTPЗапрос(«http://example.com/hs/testService»);
Запрос.ДобавитьТокенДоступа(ТокенДоступа);
Или
Заголовки = Новый Соответствие;
Заголовки.Вставить(«Authorization», «Bearer » + ТокенДоступа);
Запрос = Новый HTTPЗапрос(«http://example.com/hs/testService», Заголовки); - Добавлен новый параметр AccessToken для запуска тонкого и веб-клиентов для опубликованных инфобаз с аутентификацией по JWT-токену.
- В файле веб-публикации *.vrd инфобазы можно для сервисов и информационных баз указывать список доверенных эмитентов токена (например, список информационных баз, чьим пользователям разрешен доступ по токену в данную инфобазу) и ключи для проверки подписи.
- В файле веб-публикации *.vrd настраиваются правила сопоставления пользователей токена и пользователей информационной базы. Например, если пришел токен с полем ‘sub’, в котором указан ИвановИИ, то можно настроить сопоставление с полем «Имя» пользователя ИБ. Также можно настроить сопоставление любого поля токена с полем «Адрес электронной почты» или «Пользователь ОС» пользователя ИБ.
- В параметрах пользователя можно разрешить или запретить аутентификацию по токенам.
С помощью JWT-токенов, в частности, можно будет реализовать бесшовную кроссплатформенную интеграцию конфигураций 1С, опубликованных на веб-серверах. Одна конфигурация (например, ERP) может выступать в качестве сервера аутентификации. У другой конфигурации (например, Документооборот) в vrd-файл публикации записаны идентификатор конфигурации ERP как доверенного провайдера и ключ для проверки подписи. ERP сможет вызывать веб- и НТТР-сервисы Документооборота, передавая в них для аутентификации на стороне Документооборота JWT-токены.