Глоссарий HTTP аутентификации: Basic, Bearer, OAuth и другие непонятные слова

22.04.24

Интеграция - WEB-интеграция

Рано или поздно каждый 1С разработчик сталкивается с задачей автоматизации работы со сторонним сервисом посредством RestAPI. Одними из основных (а, как правило - и самыми запутанными) элементами любой пдобной автоматизации являются процессы авторизации и аутентификации. Токены, подписи, шифрование - как не потеряться во всем этом? Поможет данное краткое руководство

Я решил, что правильно будет разделить все приводимые понятия на уровни, чтобы шаг за шагом пройти наиболее часто встречающиеся термины, начав с самых азов. Однако, надо понимать, что здесь не будет разбора совсем базы, вроде видов http-запросов или что такое "заголовок" - только понятия и примеры по теме

 

Уровень 1: Авторизация и аутентификация

Это два действия, с которых начинается любая интеграция.
 

Аутентификация - это проверка, при которой действующее лицо подтверждает свою личность. Когда вы, например, вводите свои данные для входа на каком-нибудь сайте, то это, в первую очередь - аутентификация. Вы подтверждаете, что вы - это вы, используя пароль, соответствующий вашему логину

Авторизация - это процесс проверки и выдачи прав соответственно вашему аккаунту. Войдя в свой профиль на сайте, вы получаете доступ к некоторому набору действий, которые были определены вам разработчиками и администраторами - но не более того

Аутентификация без авторизации возможна, но лишена смысла - система вас узнает, но ничего не даст сделать.  Авторизация без аутентификации также возможна, но только если в системе предусмотрены действия, доступные для анонимных пользователей

Когда речь идет о http-запросах, то аутентификация и авторизация, как правило, совмещены. Внутри запроса (параметров, тела или заголовков) мы передаем сразу как данные аутентификации (например, токен) так и запрос на выполнение некоторых действий из списка тех, которые нам, потенциально, должны быть доступны. В случае, если аутентификация будет пройдена успешна, а авторизация подтвердит наличие прав на выполнение необходимого действия - мы получим необходимый результат


Уровень 2: Схемы Http-аутентификации/авторизации

Рассмотрим основные схемы аутентификации с примерами 

Basic
Самый простой способ аутентификации: в заголовки запроса добавляется заголовок Authorization со значением Basic Логин:Пароль, где пара Логин:Пароль кодированы в Base64. Никакого дополнительного преобразования этих данных не требуется

 

Логин  = "bayselonarrend";
Пароль = "14AB22";
Сервер = "exemple.com";
Адрес  = "/api";

Заголовки = Новый Соответствие;

Basic = Логин + ":" + Пароль;
Basic = Base64Строка(ПолучитьДвоичныеДанныеИзСтроки(Basic));

Заголовки.Вставить("Authorization", "Basic " + Basic);

НовыйЗапрос = Новый HTTPЗапрос(Адрес, Заголовки);

SSL         = Новый ЗащищенноеСоединениеOpenSSL;
Соединение  = Новый HTTPСоединение(Сервер, 443, , , , 3000, SSL);
Ответ       = Соединение.ВызватьHTTPМетод("GET", НовыйЗапрос);

 

На сегодняшний день такой способ является устаревшим и активно вытесняется, хотя при использовании https считается достаточно безопасным. Никаких хитрых решений для его обработки, в том числе и из 1С, не требуется

 




Digest

Более сложная система. Сервер по запросу отправляет клиенту некоторые данные (nonce), после чего клиент преобразует пару логин-пароль в MD5 хэш-строку на их основе. Практически не используется, так как требует хранения пароля в открытом виде на стороне сервера. Как способ аутентификации конкретно для API встречается еще реже, вероятно из-за необходимости отправки предварительного запроса получения nonce, что в обычной жизни берет на себя браузер
 

Про 1С:
MD5 в 1С реализуется штатными средствами через Новый ХешированиеДанных(ХэшФункция.MD5). Также реализация Digest есть в Коннекторе

 


 


Bearer 

Пожалуй самый распространенный способ аутентификации на данный момент. Bearer - это любые, полученные пользователем от провайдера API, данные, которые при передаче в этот API подтверждают его (пользователя) личность. В большинстве случаев это текстовые токены того или иного формата

 

Authorization: Bearer 17fa874c-cdbf-49e5-88fc-625aa63b3b00



Например, вы регистрируетесь на портале ресурса, который предоставляет публичный API. После входа в некоторый "личный кабинет" при помощи логина и пароля, вам становится доступна функция генерации токена. Вы нажимаете на кнопку, копируете себе сгенерированную строку, после чего передаете её в каждом своем запросе к API. Эта строка - Bearer токен

 

Про 1С:

В зависимости от реализации API, Bearer можете передаваться в

  • Заголовках запроса
    Сервер = "exemple.com";
    Адрес  = "/api";
    Токен  = "17fa874c-cdbf-49e5-88fc-625aa63b3b00";
    
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Authorization", "Bearer " + Токен);
    
    НовыйЗапрос = Новый HTTPЗапрос(Адрес, Заголовки);
    
    SSL         = Новый ЗащищенноеСоединениеOpenSSL;
    Соединение  = Новый HTTPСоединение(Сервер, 443, , , , 3000, SSL);
    Ответ       = Соединение.ВызватьHTTPМетод("GET", НовыйЗапрос);
  • В URL - как, например, у Telegram
    https://api.telegram.org/bot61111111:AAFyzNBOAFfuhAL5GXqbVidwAAAAAAAA/getUpdates
                               |                                         |
                               -------------------------------------------
                                              Вот эта часть
  • В теле запроса
    Сервер = "exemple.com";
    Адрес  = "/api";
    Токен  = "17fa874c-cdbf-49e5-88fc-625aa63b3b00";
    
    Параметры = "?my_token_field=" + Токен;
    
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
    
    НовыйЗапрос = Новый HTTPЗапрос(Адрес, Заголовки);
    НовыйЗапрос.УстановитьТелоИзСтроки(Параметры);
    
    SSL         = Новый ЗащищенноеСоединениеOpenSSL;
    Соединение  = Новый HTTPСоединение(Сервер, 443, , , , 3000, SSL);
    Ответ       = Соединение.ВызватьHTTPМетод("POST", НовыйЗапрос);

     

 


 


AWS4-HMAC-SHA256

Замороченный способ авторизации AWS и всех сочувствующих - поставщиков S3 в частности. Сводится к генерации авторизационных данных на основе не только лишь токена от провайдера, как в Bearer, но и на основе самого содержимого отправляемого запроса. Сформированные данные отправляются в заголовке Authorization
 

Authorization: AWS4-HMAC-SHA256                                             
Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request, 
SignedHeaders=host;range;x-amz-date,
Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024

Где:
 - Строка1 - Наименование метода
 - Строка2 - Строка <Ваш ID ключа доступа>/<Дата>/<Регион AWS>/<Сервис>/aws4_request
 - Строка3 - Список передаваемых заголовков
 - Строка4 - Сигнатура, вычисляемая по одному из доступных алгоритмов

 

Вычисление сигнатуры - вообще отдельная тема. Пока могу предложить только ссылки на ресурсы Amazon:

Для 1С:

AWS - сложный механизм, но благо на 1С уже есть реализации

 



OAuth

Стандарт авторизации, чем-то напоминающий AWS. При его использовании, для авторизации необходимо сформировать составную строку из различных данных, после чего передать её в качестве заголовка запроса


Из чего состоит авторизационная строка?

  1. OAuth - наименование стандарта
  2. oauth_consumer_key - секретный ключ от провайдера API
  3. oauth_token - токен от провайдера API
  4. oauth_signature_method - метод создания сигнатуры. Про сигнатуру будет далее.
  5. oauth_timestamp - временная отметка в UNIX Time
  6. oauth_nonce - любой уникальный идентификатор
  7. oauth_version - версия API
  8. oauth_signature - сигнатура

Из представленных выше частей наиболее загадочной является сигнатура. Давайте разбираться, что же это такое
 

Сигнатура - хэш, получаемый путем вычисления базовой строки при помощи метода, указанного в поле oauth_signature_method. Что же является базой сигнатуры?

Это соединение через следующих данных:

  • Вида запроса
  • Целевого URL
  • Всех полей авторизационной строки (из списка выше; в виде Ключ=Значение), но без поля oauth_signature
  • Всех не-двоичных полей основного запроса (в виде Ключ=Значение).

При этом, все поля новой строки (кроме URL и вида запроса) должны быть предварительно отсортированы по алфавиту по названиям (ключам) полей и кодированы в кодировке URL. После соединения строки, она должна быть приведена к верхнему регистру

Т.е. после того, как '10 плюс Число полей в запросе минус oauth_signature' пунктов соединены (с кодированием значений в кодировке URL и в расстановке по алфавиту) в одну большую строку вида
 

POST&https%3A%2F%2Fexemple.com&ПОЛЕ1=<ЗНАЧЕНИЕ1>&ПОЛЕ2=<ЗНАЧЕНИЕ2>...OAUTH_CONSUMER_KEY=<КЛЮЧ>&OAUTH_TOKEN=<TOKEN>&OAUTH_TIMESTAMP=<UNIX TIME>&OAUTH_NONCE=<UID>&OAUTH_VERSION=<V>

 

данная строка прогоняется по алгоритму, указанному в oauth_signature_method. Список доступных алгоритмов определяется провайдером API (как правило, это какой-нибудь один метод). Обычно это алгоритмы HMAC и RSA с SHA хэшированием: HMAC-SHA1, HMAC-SHA256 (H256), RSA-SHA256 (R256) и др. - о них мы поговорим на следующем уровне. После прогона строки через алгоритм, полученное значение переводится в Base64Строка и кодируется в кодировке URL

В результате получается хэш, который и является сигнатурой - его значение дописывается в исходную строку:
 

OAuth oauth_consumer_key="<ключ>",oauth_token="<token>",oauth_timestamp="<unix time>",oauth_nonce="<uid>",oauth_version="<v>",oauth_signature="<Наша сигнатура>"

 

Для создания сигнатуры, алгоритму необходима не только база (наша строка), но и ключ - им может выступать строка <oauth_token> &<oauth_consumer_key>. Так или иначе - подобное будет оговорено в документации к конкретному API


Готовая строка передается в заголовке Authorization

Для 1С:

 
 Пример создания заголовка 

 

 


 

OAuth2

Сиквел OAuth, более щадящий в вопросах подготовки запроса, но более сложный в организационных вопросах. При его использовании нет необходимости собирать огромную авторизационную строку как у первого OAuth - используется просто обычный токен (т.е. в вопросах непосредственной отправки запроса, OAuth2 - это Bearer)

Основная суть тут уже в получении и обновлении данного токен. Принцип работы таков:
 

  1. Где-то в настройках API "для разработчиков" указывается redirect_url - адрес вашего ресурса, который будет готов принять внешний запрос с токеном. Говоря просто - это должен быть http-сервис с доступом извне. Т.е. без web-сервера ничего не получится
     
  2. Для получения токена, пользователь в браузере переходит на страницу авторизации и нажимает нечто вроде "Войти"
     
  3. После нажатия кнопки, Http-запрос с токеном отправляется по redirect_url. На нем наш обработчик должен забрать эти данные и сохранить
     
  4. В этом запросе есть два токена - обычный access_token (токен доступа), который и используется как раз для необходимых нам запросов и refresh_token (токен обновления), о котором далее
     
  5. Токен доступа (access_token) - не вечен. Время его жизни оговаривается в документации или летит отдельным полем в запросе из п.4 как expire. Для продолжения работы по истечении срока жизни токена, его необходимо обновить. Для этого отправляется особый запрос к API с refresh_token на борту
     
  6. В ответе этого "особого" запроса приходит новый access_token, а у особо поехавших (привет, Twitter) в некоторых случаях - и новый refresh_token. Все это заменяет прошлые данные
     
  7. Пункты 5 и 6 повторяются периодически
     
    |--> ОбновитьТокен() ->|access_token  --> Используется в т-нии n часов для запросов
    |                      |refresh_token --|
    |--------[через n ч.]-------------------|
    

 

 

На самом деле, все мы сталкиваемся с подобным механизмом каждый день: "Войти при помощи Google/Yandex/VK ID" на разных сайтах - это реализация OAuth2, где сайт, на котором осуществляется вход, также получает токен нашего аккаунта с определенными правами (они, как правило, показываются на панели входа: "Получит доступ к адресу почты", "Получит доступ к номеру телефона" и все такое)
 

Для 1С:

Пример работы с OAuth и OAuth2 есть в реализации API Twitter в ОПИ

Статья по теме 1

Статья по теме 2

 


 

JWT

JWT (JSON Web Tokens) - не стандарт аутентификации, но скорее формат передачи подписанных данных. Готовые токены такого формата могут использоваться для передачи в качестве Bearer 

JWT это JSON данные, состоящие из 3-х частей: заголовка, полезных данных и сигнатуры (подписи) 

 

  • Заголовок (header) - JSON-объект с информацией о способе вычисления подписи
    { "alg": "HS256", "typ": "JWT"}
  • Данные (payload) - JSON-объект непосредственно с полезной нагрузкой
    { "Поле": "Значение" }
  • Подпись (signature) - значение, вычисляемое следующим способом
    СекретныйКлюч = "1111";
    B64Заголовок  = Base64UrlEncode(ПолучитьДвоичныеДанныеИзСтроки(Заголовок));
    B64Данные     = Base64UrlEncode(ПолучитьДвоичныеДанныеИзСтроки(Данные));
    
    НеподписанныйТокен = B64Заголовок + "." + B64Данные;
    
    Сигнатура = Криптография.HMAC(ПолучитьДвоичныеДанныеИзСтроки(СекретныйКлюч)
        , ПолучитьДвоичныеДанныеИзСтроки(НеподписанныйТокен)
        , ХэшФункция.SHA256);
    
    Сигнатура = Base64UrlEncode(Сигнатура);
    
    
    
    ...
    
    Функция Base64UrlEncode(Знач Значение)
    
    	Ответ = Base64Строка(Значение);
    	Ответ = СтрРазделить(Ответ, "=")[0];
    	Ответ = СтрЗаменить(Ответ, Символы.ВК + Символы.ПС, "");
    	Ответ = СтрЗаменить(Ответ, "+", "-"); 
    	Ответ = СтрЗаменить(Ответ, "/", "_"); 
    	Возврат Ответ;
    
    КонецФункции
    

 

Сам токен - соединение всех частей через точку
 

Токен = Заголовок + "." + Данные + "." + Сигнатура;

 

Далее его можно использовать по прямому назначению

 

Для 1С:
Open-source библиотека для JWT в 1С
Статья по теме
Конструктор JWT на jwt.io


 

Помимо этих вариантов есть еще схемы: MutualHOBA, VAPID и др., но вероятность встретить подтверждение личности по паспорту в реальной жизни куда выше, чем их реализацию в публичном API. И если некоторые из них (например Mutual) в реальном мире на самом деле существуют, просто под капотом интернета, то найти хотя бы теоретическую информацию о том, что же такое HOBA, вообще крайне сложно
 

 

Уровень 3 - Алгоритмы

На предыдущем уровне в некоторых из схем нам встречалось создание сигнатур. При работе с каждой из них, в зависимости от воли провайдера API, требуется применение того или иного алгоритма обработки данных. Наиболее распространенными из них на данный момент являются HMAC и RSA, в вариациях, основанных на различных алгоритмах хэширования - HMAC-SHA1, RSA-SHA256 и др. О них и поговорим

HMAC

HMAC (Hash-based message authentication code) - один из самых популярных механизмов проверки целостности информации. Я не буду рассказывать прохладные истории, будто бы понимаю (или должен понимать) как он внутри работает - никому из нас, я думаю это и не нужно. Как и в любых подобных вещах, 95% HMAC - это зубодробительный МАТАН, так что лучше сразу перейдем к 1С

Тут нам повезло гораздо больше (спойлер) чем с алгоритмом RSA: в Библиотеке стандартных подсистем, а именно в модуле РаботаВМоделиСервисаБТС есть замечательная, но, почему-то не экспортная, функция
 

HMAC(Знач Ключ, Знач Данные, Тип, РазмерБлока)


В параметре Тип она принимает значение платформенного перечисления ХешФункция (ХешФункция.SHA1, ХешФункция.SHA256, ХешФункция.SHA512) от которого и будет зависеть, собственно, будет у нас HMAC-SHA256, HMAC-SHA512 или HMAC-SHA1. А большего тут и не надо

 

RSA

RSA используется не так часто, как HMAC, но зато печально известно в мире 1С своим применением в сервисах от Google, когда речь заходит о работе через Service account. В 1С нет реализации RSA и лично я встречал всего несколько вариантов решений данной проблемы:

  • В репозитории malikov-pro/google_api_1c можно найти подобное решение
     
    Функция ПолучиьПодписьRSASHA256(СтрокаДанные, КлючПодписи_XML) Экспорт
    	
    	Хеширование = Новый ХешированиеДанных(ХешФункция.SHA256);
    	Хеширование.Добавить(СтрокаДанные);
    	ХешДвоичный = Хеширование.ХешСумма;
    	
    	КриптоПровайдер = Новый COMОбъект("System.Security.Cryptography.RSACryptoServiceProvider");
    	КриптоПровайдер.FromXmlString(КлючПодписи_XML);
    	
    	SafeArrayBinХешДляПодписи = SafeИзДвоичных(ХешДвоичный);
    	SafeArrayBinПодписьДвоичная = КриптоПровайдер.SignHash(SafeArrayBinХешДляПодписи, "SHA256");
    	
    	Возврат ДвоичныеИзSafe(SafeArrayBinПодписьДвоичная);
    	
    КонецФункции


    Тут используется COM объект, что не очень хорошо, но выглядит довольно просто и под Windows будет работать

  • Dll на Инфостарте. Скажу честно - не проверял

  • Формирование объекта через новый платформенный объект ТокенДоступа. Есть недавняя статья на эту тему, но подойдет только тем, у кого свежая версия 1С (в статье 8.3.21) 

  • Есть пример решения на Python, интегрированного в решение для Google Sheets на 1С от Евгения Комиссарова

 

Возможно есть и другие, но я о них не знаю. Хотя очень искал, когда начинал делать интеграцию с Google Drive

Другие же алгоритмы на практике встречаются гораздо реже

 

В заключении

В принципе, это все, что я хотел рассказать. Если я что-то упустил или вы нашли ошибку - напишите в комментариях. Также ниже будет список полезных ресурсов, который могут помочь при работе с API. Список будет дополняться, так что если знаете еще что-нибудь - об этом можете написать также
 

Спасибо за внимание!

 

 

 Мой GitHub:     https://gitub.com/Bayselonarrend 
 Лицензия MIT:   https://mit-license.org

web api авторизация rest rest api oauth bearer token аутентификация интеграция обмен сервисы http https

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

Сайты и интернет-магазины WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    16042    13    18    

13

Интеграция 1С — Битрикс24. Обмен задачами

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (8.3.18.1289). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    18083    10    15    

16

SALE! 10%

Автоматическая загрузка файлов (например, прайс-листов) из электронной почты, FTP, HTTP, их обработка и выгрузка на FTP (на сайт) и для других целей

Прайсы WEB-интеграция Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Программа с заданным интервалом времени (или по ручной команде) скачивает файлы (например, прайс-листы поставщиков) из различных источников: письма электронной почты, FTP или HTTP-адреса, и сохраняет их в каталог упорядоченной структуры. При этом извлекает файлы из архивов, может переименовывать файлы и менять их формат (csv, xls, txt). Можно настроить выгрузку обработанных файлов на сайт (через FTP-подключение). Программа будет полезна компаниям, у которых есть большое количество поставщиков и/или прайс-листы поставщиков обновляются часто (необязательно прайс-листы, файлы могут быть любого назначения). Собранные таким образом актуальные версии прайс-листов можно выгрузить с помощью программы себе на сайт (или на любой FTP-сервер) или выполнить другие необходимые задачи.

28000 25200 руб.

28.05.2015    85283    26    51    

50

Модуль для обмена "1С:Предприятие 8. УАТ. ПРОФ" с FortMonitor

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    12970    32    8    

12

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

Обмен с ГосИС WEB-интеграция Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    89545    163    217    

320
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Dzenn 875 22.04.24 14:47 Сейчас в теме
Начал читать, и что-то мне подсказывает, что после освоения я разберусь во всём этом. Спасибо тебе, добрый человек.
bayselonarrend; +1 Ответить
2. Silenser 596 22.04.24 17:41 Сейчас в теме
Круто. Если будет возможность, можете сюда же добавить TOTP / OTP. По идее, это то же входит в этот же контекст.
5. bayselonarrend 1236 22.04.24 18:51 Сейчас в теме +5 $m
(2) Постараюсь, но надо разбираться - на практике мне не встречался до этого
3. Dzenn 875 22.04.24 17:48 Сейчас в теме
Автор, "Коннектор" это тоже твоё?
4. bayselonarrend 1236 22.04.24 18:50 Сейчас в теме
6. kalyaka 1074 22.04.24 19:19 Сейчас в теме
Спасибо за структурированную подачу материала. Наконец то я понял, что за "медведя" всегда использовал :)
bayselonarrend; +1 Ответить
7. efin 23.04.24 23:37 Сейчас в теме
Для Basic необходимо пару логин:пароль обернуть в base64
bayselonarrend; +1 Ответить
8. bayselonarrend 1236 24.04.24 09:00 Сейчас в теме
(7)Да, пропустил момент. Спасибо
10. efin 24.04.24 12:22 Сейчас в теме
(8)
Можно вот так
Basic = Base64Строка(ПолучитьДвоичныеДанныеИзСтроки(Basic));
и тогда переносы строк убирать не придется, сэкономите 2 строки кода
SOLTAN; NicolasCage; bayselonarrend; +3 Ответить
9. soulner 362 24.04.24 11:58 Сейчас в теме
Всем добрый день, хочется немного добавить.
1. Полный формат сетевого имени Логин:Пароль@ИмяСервера.Домен, и когда мы используем объект HTTPСоединение с указание логина и пароля, то авторизация происходит именно таким способом. Автор использовал Basic-авторизацию через заголовок HTTPЗапроса, так тоже иногда работает, но про указание имени и пароля в HTTPСоединении нельзя забывать. Так работает авторизация в 1С и SAP, например.
2. Как понять какая авторизация нужна web-сервису, а нужно выполнить к нему запрос и получить ошибку 401, а в заголовке ответа будет строка WWW-Authenticate, в которой указывается тип авторизации и приложение (или каталог), которое его требует.
А так, хорошая статья, плюсанул.
SOLTAN; bayselonarrend; +2 Ответить
11. kamisov 153 28.04.24 09:13 Сейчас в теме
Благодарю за статью!

Немного дополню:

1. HMAC уже начинают считать устаревшим. Например в новых версиях Hashicorp Vault вы не авторизуетесь по JWT с HMAC подписью, так как библиотека go-jose перестала поддерживать это. https://github.com/hashicorp/vault-plugin-auth-jwt/pull/290
2. Токен доступа в 1С полноценно работает с 8.3.24. До этой версии он делает поля iat и exp не числами, а строками, на чем та же go-jose падает. Тут ничего нового, 1С как обычно реализовала стандарт в своем уникальном прочтении. Спасибо что исправились.
bayselonarrend; +1 Ответить
Оставьте свое сообщение