Каталог решений - 1С:Шина. Авторизация с токеном

1С:Шина. Авторизация с токеном

1С:Шина. Авторизация с токеном

В наличии

Практический пример использования авторизации Bearer на 1С:Шина. Рассматривается вариант настройки 1С:Шина для использования по авторизации с использованием токена.
Получение идентификатора пользователя, который подключается к шине, и фиксация его действия после подключения. Для тестовой отправки post запросов используется Postman.

Категория:

Описание

Статья написана по хроникам внедрения 1С:Шина версии 6.1.6 в Первом Бите на Спортивной.

Начало можно почитать тут, в этой статье дополнение по дополненному функционалу. Вообще статьи независимы.

Источ ники:

  • Официальная документация по продукту 1С:Шина. Ссылка

Описание задачи

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

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

Я выбрал вариант и выдал права целиком на http сервис, см дальше скрины моих настроек

 

Рисунок 1. Настройка http сервиса

 

Далее для шаблона и для метода оставляем незаполненным

 

Рисунок 2. Настройка шаблона

 

Рисунок 3. Настройка метода

 

Если вы создаете новые элементы, то все будет работать, но я изменял с анонимного варианта (выбрать Разрешено всем) и в документации нашел пункт, что надо выполнить пересчет прав.

Заходите в свое приложение и делаете как указано на рисунке 4, ниже

 

Рисунок 4. Пересчитать права

 

Добавляем пользователя и разрешаем ему доступ к приложению HTTP

Обычно у приложения создается список пользователей, поэтому мы так и сделаем.

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

 

Рисунок 5. Создание пользователя

 

Далее подключаем пользователя, рисунок  6.

 

Рисунок 6. Подключение пользователя к приложению

 

и через 3 точки меняем настройки прав у пользователя test2,

 

Рисунок 7. Изменить настройки у пользователя test2

 

и ставим галку

 

Рисунок 8. Предоставление права пользователю на подключение к http сервисам приложения

 

После этого у пользователя генерируем ключи доступа пару clientid и secretid, для этого провалились в пользователя и в разделе ключи доступа нажали получить

 

Рисунок 9. Получение ключей доступа для пользователя

 

clientid вам будет доступен, а вот secretid только раз доступен на этапе получения.

Уже полученные ключи доступа используем в токенах, отправляем POST запрос на url: http://localhost:9090/applications/НазваниеПриложения/sys/token

в Header добавляем

ContentType application/x-www-form-urlencoded

и в тело следующий текст

grant_type=CLIENT_CREDENTIALS

Если все правильно указано, то шина вернет вам 200 ответ и токен, который действует 1 час.

Теперь надо понять, как получить того, кому принадлежит токен при подключении и записать его в РС внутри 1С-шина.

Это то, что я не увидел в документации, но было  получено от техподдержки 1С:Шина.

// Перечисление
конст order = ТипыЗапросов.order

метод ОбработкаЗапроса(Запрос: HttpСервисЗапрос)
знч ТелоЗапросаИзПотока = Запрос.Тело.ПрочитатьКакСтроку()
пер ГуидВызова = новый Ууид()
знч Пользователь = Пользователи.ТекущийПользователь
        //Запись в РС Сообщения из внешних систем.
        //ГуидВызова - уид для сообщения, ДатаЗаписи - дата и время когда была сделана запись, ИсходноеСообщение - тело которое нам пришло
        //Пользователь - элемент справочника Пользователи, под которым подключились к шине и было отправлено  сообщение

        пер Запись = новый СообщенияДляВнешнихСистем.Запись(Период = Момент.Сейчас(), ГуидВызова = ГуидВызова,
                ДатаЗаписи = ДатаВремя.Сейчас(
				ЧасовойПояс {UTC+3}), ИсходноеСообщение = ТелоЗапросаИзПотока, Пользователь = Пользователь, ТипЗапроса = order,
                Обработано = Истина)
        СообщенияДляВнешнихСистем.Записать(Запись)
;

 

Перечисление создается вообще без каких либо сложностей.

РС "СообщенияДляВнешнихСистем", создать с периодом Момент, также имеет следующую структуру:

Измерения:

  • ГуидВызова. ТипУуид
  • Пользователь. ТипНеопределено, ПользовательСсылка

Ресурсы:

  • ИсходноеСообщение. Тип Строка неограниченная
  • Обрабатано. Тип Булево
  • ТипЗапроса. Тип Перечисление.ТипыЗапросов

Реквизиты:

ДатаЗаписи. Тип ДатаВермя

 

Отдельно выгрузку из шины не создавал, если будет потребность, то пишите в комментарии, дополню статью.

Все скрины сделаны на основе сервиса из первоначальной статьи

Еще раз — вся информация есть в статье, настройка несложная, будут вопросы — пишите, подскажу.

Скачивать архив — это тому, кому лень читать и повторять и для поддержки автора.

has been added to your cart:
Оформление заказа