Статья написана по хроникам внедрения 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,
Обработано = Истина)
СообщенияДляВнешнихСистем.Записать(Запись)
;
Перечисление создается вообще без каких либо сложностей.
РС "СообщенияДляВнешнихСистем", создать с периодом Момент, также имеет следующую структуру:
Измерения:
- ГуидВызова. ТипУуид
- Пользователь. ТипНеопределено, ПользовательСсылка
Ресурсы:
- ИсходноеСообщение. Тип Строка неограниченная
- Обрабатано. Тип Булево
- ТипЗапроса. Тип Перечисление.ТипыЗапросов
Реквизиты:
ДатаЗаписи. Тип ДатаВермя
Отдельно выгрузку из шины не создавал, если будет потребность, то пишите в комментарии, дополню статью.
Все скрины сделаны на основе сервиса из первоначальной статьи
Еще раз - вся информация есть в статье, настройка несложная, будут вопросы - пишите, подскажу.
Скачивать архив - это тому, кому лень читать и повторять и для поддержки автора.