Конфигурация http сервиса jwt авторизации + клиент React JS

04.07.21

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

Если мы используем 1С в качестве Back-End для SPA, очень важно реализовать аутентификацию внешних пользователей. В данной публикации приведен пример конфигурации, реализующей аутентификацию , а также клиент, написанный на React js.

Скачать файлы

Наименование Файл Версия Размер
Реализация http сервиса jwt авторизации
.cf 106,61Kb
13
.cf 106,61Kb 13 Скачать

При создании данной публикации использовалась статья Sasha Zmts "Про токены, JSON Web Tokens (JWT), аутентификацию и авторизацию. Token-Based Authentication"
https://gist.github.com/zmts/802dc9c3510d79fd40f9dc38a12bccfc

А также реализация jwt токена на платформе 1с представленная Vasily Pintov
https://github.com/pintov/1c-jwt
 

Api конфигурации

`${API_URL}/?typerequest=login
Комментарий: Получение ключей по логину и паролю

Запрос {email,password}
Ответ {error, AccessToken, RefreshToken}
set-cookie {refreshToken}

`${API_URL}/?typerequest=RefreshToken
Комментарий: Обновление ключей 
Запрос {}
Ответ {error, AccessToken, RefreshToken}
set-cookie {refreshToken}

`${API_URL}/?typerequest=getConformationCode
Комментарий: Получение письма с кодом подтверждения на указанный адрес
Запрос {userID}
Ответ {error, requestKey }


`${API_URL}/?typerequest=getKeyChangePassword
Комментарий: Получение ключа изменения пароля
Запрос {userID, requestKey - уникальный код запроса, формируется сервером при выполнении getConformationCode, code - код из письма}Ответ  {error, key}
 

`${API_URL}/?typerequest=passwordChange

Комментарий: Установка нового пароля
Запрос {passwordСhangeKey, password}
Ответ {error, AccessToken, RefreshToken}
set-cookie {refreshToken}

Для тестирования сервиса авторизации мной был разработан js клиент

Исходный код доступен по ссылке https://github.com/inzarubin80/authorization 

В проекте используются следующие основные библиотеки React, material-uri, formik, redux, react-router axios 

Тестировал на платформе 1С:Предприятие 8.3 (8.3.19.1150) + Apache 2.4.23-x86 

1c + React js Set-Cookie accessToken refreshToken jwt авторизация http

См. также

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

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

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме. Без существенных изменений типовой конфигурации. Проверено с брендами: Интеграция 1С и GEELY Интеграция 1С и HAVAL Интеграция 1С и KIA Интеграция 1С и FORD Интеграция 1С и LADA ГАРАНТИЯ 100% ВНЕДРЕНИЯ!

36000 руб.

03.08.2020    15729    10    17    

11

Интеграция 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    17545    6    15    

13

Интеграция с сервисом vetmanager

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

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

12000 руб.

02.02.2021    16357    42    49    

23

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    25736    9    0    

7

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

Обмен с ГосИС 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    88576    160    215    

318
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Dmitrij-2 45 04.07.21 15:04 Сейчас в теме
Для работы с конфигурацией просит 19 платформу. Есть возможность выложить на 18 платформе?
2. van_za 243 04.07.21 16:18 Сейчас в теме
(1) сейчас установлю режим совместимости с 18 и выложу, там нет использования каких то новейших фишек, просто какая была платформа в той и делал.
3. van_za 243 04.07.21 16:29 Сейчас в теме
Если кто решит развернуть клиент локально для разработки в vs code например то в нужно будет в файле setupProxy.js изменить путь к вашему сервису 1с, он тоже должен быть локально (api и фронтенд должны быть в одном домене что бы 1с могла устанавливать куки)
const { createProxyMiddleware } = require('http-proxy-middleware');

module.exports = function(app) {
app.use(
'/api',
createProxyMiddleware({
target: 'http://localhost:80/TaskManagement/hs/api',
changeOrigin: true,
})
);
};
В случае продакшина проксирование нужно делать средствами веб сервера, например так как это описано в
https://gist.github.com/zmts/802dc9c3510d79fd40f9dc38a12bccfc
4. malikov_pro 1292 05.07.21 06:04 Сейчас в теме
Еще один шаг к реализации https://github.com/gothinkster/realworld

По JWT нужно указать что это HS256 c использованием статичного ключа на стороне сервера

"очень важно реализовать авторизацию внешних пользователей" - аутентификацию

"Api конфигурации" - postman коллекцией можно реализовать и прогонять тесты (проще чем писать клиент), у realworld http тесты бекенда не проходили при реализации на node.js.
5. van_za 243 05.07.21 09:11 Сейчас в теме
(4) ну как бы да... можно тестирования так не заморачиваться...понятно что для этого не нужна библиотека предназначенная дли визуализации.
вдруг кто то еще работает в связке react + 1c, будет полезно наверное...
6. dkoder 5 22.07.21 14:50 Сейчас в теме
Да связка супер. Только вместо redux, как по мне, лучше использовать MobX State Tree. Технология идеологически ближе к архитектуре 1С. И работать с ней проще.
7. van_za 243 22.07.21 19:54 Сейчас в теме
спасибо за отзыв!

Мне нравится conext появившийся в react, сейчас в основном его использую без отдельных библиотек для состояний.
https://github.com/inzarubin80/btb/blob/master/src/context/

вот что то пишут
https://habr.com/ru/post/489854/ - "Redux против MobX без путаницы"

плюс redux в том что он все таки очень простой... там вроде 80 строк в библиотеке, ну и так сказать создан отечественным программистом:)
минус в том что для работы с асинхронными вызовами (например для запросов на сервер) нужна дополнительная библиотека например react-thunk, ну и громоздкость конструкций
8. dkoder 5 26.07.21 13:01 Сейчас в теме
(7) Уточню. Я говорил не про MobX, а про Mobx State Tree (MST). Использовали его на проектах достаточно крупных интернет магазинов.
Мое мнение, что redux библиотека, и все приходится прописывать руками, особенно, не нравится, что приходится прописывать меппинги в компонентах. А MST ближе к фрейворку. Прописывать нужно гораздо меньше. Структура понятнее. Например, есть товар - он описывается отдельной моделью в MST, и все его реквизиты и методы прописаны в одном файле. Далее в ТЧ заказа делается реквизит с типом товар. При этом очень просто подготовить состояние на back в виде JSON и грузануть в состояние.
Очень похож на известный фреймворк 1С ;)
9. van_za 243 27.07.21 15:25 Сейчас в теме
(8)
Mobx State Tree

буду изучать, спасибо
10. efin 06.05.22 19:10 Сейчас в теме
В 8.3.21 появилась нативная авторизация в http-сервисе с помощью JWT-токена. Кто знает как настроить это в файле default.vrd? На ИТС нет примера, у самого не получилось, 2 дня мучаюсь - при обращении к сервису с токеном пишет ошибку 402. "Токен доступа недействителен.Некорректное значение параметра 'iss'"

Конструкция в default.vrd вот такая

<accessTokenAuthentication>
<issuers>
<issuer name="TEST" keyInformation="testwsfjwpfwjfpweojfpjpeo2323operj2p3r"/>
</issuers>

</accessTokenAuthentication>



Собственно, без этой конструкции такое же сообщение )
11. efin 11.05.22 19:21 Сейчас в теме
Оставьте свое сообщение