1С 8.3 Аутентификация по JWT-токену - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Аутентификация по JWT-токену

Перейти в раздел примеры кода 1С 8.3:
JSON Web Token (JWT) это открытый стандарт (RFC 7519) аутентификации для HTTP сервисов. Используется для аутентификации пользователя в клиент-серверных приложениях.
Подробно о JWT-токене: https://ru.wikipedia.org/wiki/JSON_Web_Token.

Для аутентификации токен должен быть подписан (перед отправкой) одним из 12 алгоритмов подписи токенов, поддерживаемых 1С 8.3. В параметрах пользователя можно разрешить или запретить аутентификацию по токенам. Процедура инициализации токена доступа для аутетификации JWT в 1С 8.3 доступна с версии 8.3.21.
Пример структуры JWT-токена:
{  
     "alg": "HS256",
     "typ": "JWT"

} {
    
"sub": "09876",   
     "name": "Andy Siver",   
     "admin": true

}
Пример аутентификации с помощью JWT-токена в 1С 8.3:
Процедура Инициализация_JSON_Web_Token(НомерПримера) Экспорт

   // Параметр: НомерПримера - это вариант исполнения 1,2 или 3

   Токен = Новый ТокенДоступа;
   Токен.Эмитент = "БУ";
   Токен.Получатели.Добавить("УТ");
   Токен.ВремяСоздания = ТекущаяУниверсальнаяДата() - Дата(1970,1,1,0,0,0);
   Токен.ВремяЖизни = 5400;

   Ключ = Константы.КлючПодписи.Получить();
   Токен.Подписать(АлгоритмПодписиТокенаДоступа.HS256, Ключ);

   // Через параметр запроса "AccessToken" или в заголовке "Authorization"
   // можно передавать токен доступа в формате Base64URL (автоматически конвертируется
   // в строку в формате Base64URL)

   Если НомерПримера = 1 Тогда
       Запрос = Новый HTTPЗапрос("http://example.com/hs/testService?AccessToken=" + Токен);
   ИначеЕсли НомерПримера = 2 Тогда
       Запрос = Новый HTTPЗапрос("http://example.com/hs/testService");
       Запрос.ДобавитьТокенДоступа(Токен);
   ИначеЕсли НомерПримера = 3 Тогда
       Соотв = Новый Соответствие;
       Соотв.Вставить("Authorization", "Bearer " + Токен);
       Запрос = Новый HTTPЗапрос("http://example.com/hs/testService", Соотв);
   КонецЕсли;

   // В файле *.vrd можно указать список доверенных эмитентов токена
   // (например, список информационных баз, чьим пользователям разрешен доступ по токену в данную инфобазу)
   // и ключи для проверки подписи.
  //
  // Подробно о параметрах пользователя информационной базы: https://its.1c.ru/db/v8321doc/bookmark/adm/TI000000123
  // Подробно о файле default.vrd (настройки веб-клиента, интернет-сервисов): https://its.1c.ru/db/v8321doc/bookmark/adm/TI000000379
  //
  // А также настроить правила сопоставления пользователей токена и пользователей информационной базы.
   // (например, если пришел токен с полем 'vrt', в котором указан МакейВН,
   // то можно настроить сопоставление с полем "Имя" пользователя ИБ.
   // Также можно настроить сопоставление любого поля токена с полем "Адрес электронной почты"
   // или "Пользователь ОС" пользователя ИБ.

КонецПроцедуры

2
комментарии
Не могу найти как получить токен с веб-сайта по технологии OAuth. Может кто поможет?
Сергей
21 фев 2023
Спасибо, нагуглил ваш пример через Bearer.
Только лучше назвать не Соотв, а Заголовки.
____________________
Copyright©, «Программист 1С в г.Минске», 18.06.2021
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому