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

04.07.21

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Реализация http сервиса jwt авторизации
.cf 106,61Kb
15
15 Скачать (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    1240    1    1    

4

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

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

36000 руб.

03.08.2020    18356    20    22    

18

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

Интеграция 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    20566    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    322    2    0    

5

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

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

24000 руб.

27.09.2024    2500    1    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 1326 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 Сейчас в теме
Оставьте свое сообщение