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

14.05.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

См. также

WEB-интеграция Администрирование веб-серверов Платные (руб)

Веб-портал обеспечивает удобный доступ к конфигурации 1С:ITIL(ИТИЛ), 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    2728    3    0    

10

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

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С.

60000 руб.

07.05.2019    34824    68    45    

27

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

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

57600 руб.

26.11.2024    2498    2    3    

5

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

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

36000 руб.

03.08.2020    19150    23    22    

20

WEB-интеграция Программист Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    18921    54    50    

31

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

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    932    4    2    

6

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 1C:Бухгалтерия 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    4238    3    2    

4

Обмен с ГосИС 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    93252    193    217    

344
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Dzenn 904 22.04.24 14:47 Сейчас в теме
Начал читать, и что-то мне подсказывает, что после освоения я разберусь во всём этом. Спасибо тебе, добрый человек.
bayselonarrend; +1 Ответить
2. Silenser 613 22.04.24 17:41 Сейчас в теме
Круто. Если будет возможность, можете сюда же добавить TOTP / OTP. По идее, это то же входит в этот же контекст.
5. bayselonarrend 2546 22.04.24 18:51 Сейчас в теме +5 $m
(2) Постараюсь, но надо разбираться - на практике мне не встречался до этого
3. Dzenn 904 22.04.24 17:48 Сейчас в теме
Автор, "Коннектор" это тоже твоё?
4. bayselonarrend 2546 22.04.24 18:50 Сейчас в теме
6. kalyaka 1128 22.04.24 19:19 Сейчас в теме
Спасибо за структурированную подачу материала. Наконец то я понял, что за "медведя" всегда использовал :)
bayselonarrend; +1 Ответить
7. efin 23.04.24 23:37 Сейчас в теме
Для Basic необходимо пару логин:пароль обернуть в base64
bayselonarrend; +1 Ответить
8. bayselonarrend 2546 24.04.24 09:00 Сейчас в теме
(7)Да, пропустил момент. Спасибо
10. efin 24.04.24 12:22 Сейчас в теме
(8)
Можно вот так
Basic = Base64Строка(ПолучитьДвоичныеДанныеИзСтроки(Basic));
и тогда переносы строк убирать не придется, сэкономите 2 строки кода
silberRus; SOLTAN; NicolasCage; bayselonarrend; +4 Ответить
9. soulner 471 24.04.24 11:58 Сейчас в теме
Всем добрый день, хочется немного добавить.
1. Полный формат сетевого имени Логин:Пароль@ИмяСервера.Домен, и когда мы используем объект HTTPСоединение с указание логина и пароля, то авторизация происходит именно таким способом. Автор использовал Basic-авторизацию через заголовок HTTPЗапроса, так тоже иногда работает, но про указание имени и пароля в HTTPСоединении нельзя забывать. Так работает авторизация в 1С и SAP, например.
2. Как понять какая авторизация нужна web-сервису, а нужно выполнить к нему запрос и получить ошибку 401, а в заголовке ответа будет строка WWW-Authenticate, в которой указывается тип авторизации и приложение (или каталог), которое его требует.
А так, хорошая статья, плюсанул.
SOLTAN; bayselonarrend; +2 Ответить
11. kamisov 221 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С как обычно реализовала стандарт в своем уникальном прочтении. Спасибо что исправились.
JohnyDeath; fatman78; itmind; bayselonarrend; +4 Ответить
12. Cyberhawk 135 14.05.24 09:06 Сейчас в теме
аутентификация будет пройдена успешна
bayselonarrend; +1 Ответить
13. user2104327 12.09.24 10:12 Сейчас в теме
кто-нибудь настраивал аутентификацию в http-сервисе 1С Шина?
Оставьте свое сообщение