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

04.07.21

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Реализация http сервиса jwt авторизации
.cf 106,61Kb
16
16 Скачать (1 SM) Купить за 1 850 руб.

При создании данной публикации использовалась статья 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

См. также

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

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

57600 руб.

26.11.2024    1555    1    1    

4

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

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

36000 руб.

03.08.2020    18568    20    22    

18

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

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23): 1С:Управление торговлей, 1С:Управление Нашей фирмой 3, 1С:Комплексная автоматизация 2, Объединенное решение: Модуль 1С:CRM 3 (3.0.21.3) +1С:ERP Управление предприятием 2. При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

7200 руб.

04.05.2021    20715    13    19    

18

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    476    2    0    

5

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

337
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Dmitrij-2 48 04.07.21 15:04 Сейчас в теме
Для работы с конфигурацией просит 19 платформу. Есть возможность выложить на 18 платформе?
2. van_za 270 04.07.21 16:18 Сейчас в теме
(1) сейчас установлю режим совместимости с 18 и выложу, там нет использования каких то новейших фишек, просто какая была платформа в той и делал.
3. van_za 270 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 1327 05.07.21 06:04 Сейчас в теме
Еще один шаг к реализации https://github.com/gothinkster/realworld

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

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

"Api конфигурации" - postman коллекцией можно реализовать и прогонять тесты (проще чем писать клиент), у realworld http тесты бекенда не проходили при реализации на node.js.
5. van_za 270 05.07.21 09:11 Сейчас в теме
(4) ну как бы да... можно тестирования так не заморачиваться...понятно что для этого не нужна библиотека предназначенная дли визуализации.
вдруг кто то еще работает в связке react + 1c, будет полезно наверное...
6. dkoder 6 22.07.21 14:50 Сейчас в теме
Да связка супер. Только вместо redux, как по мне, лучше использовать MobX State Tree. Технология идеологически ближе к архитектуре 1С. И работать с ней проще.
7. van_za 270 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 6 26.07.21 13:01 Сейчас в теме
(7) Уточню. Я говорил не про MobX, а про Mobx State Tree (MST). Использовали его на проектах достаточно крупных интернет магазинов.
Мое мнение, что redux библиотека, и все приходится прописывать руками, особенно, не нравится, что приходится прописывать меппинги в компонентах. А MST ближе к фрейворку. Прописывать нужно гораздо меньше. Структура понятнее. Например, есть товар - он описывается отдельной моделью в MST, и все его реквизиты и методы прописаны в одном файле. Далее в ТЧ заказа делается реквизит с типом товар. При этом очень просто подготовить состояние на back в виде JSON и грузануть в состояние.
Очень похож на известный фреймворк 1С ;)
9. van_za 270 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 Сейчас в теме
Оставьте свое сообщение