Спасибо за статью, хотелось бы отметить что отсутствие возможности выполнять операции по записи по списку объектов очень ограничивают применимость платформы для заказчиков с большими объемами и приводит к запросам на запись в цикле.
Для того что бы обращение попало в 1с для обработки, 1с http сервис сконфигурирован таким образом что все запросы выполняются под одним пользователем (vrd файл)
В модуле HS по типу запроса определяется обработчик
Если ТипЗапроса = "login" Тогда
ДанныеОтвета = Авторизация.Логин(ДанныеЗапроса.email, ДанныеЗапроса.password);
Данный метод проверяет соответствие имени и пароля значению которое хранится в регистре сведений "ПаролиВнешнихПользователей" и если находится соответствие то генерируется два ключа accessToken и refreshToken
При обращении в к защищенному методу на стороне 1с проверяется валидность token, проверяется время жизни, проверяется что JWT id выдавался данному пользователю если все ок возвращается пользователь либо ошибка
accessToken = Запрос.Заголовки.Получить("authorization");
accessToken = СтрЗаменить(СтрЗаменить(accessToken, "bearer", ""), " ", "");
СтруктураПользователя = Авторизация.ПолучитьПользоватеяПоКлючу(accessToken);
Если ЗначениеЗаполнено(СтруктураПользователя.error) Тогда
Ответ = Новый HTTPСервисОтвет(401);
ДанныеОтвета = Новый Структура("error",СтруктураПользователя.error);
Иначе
Если на клиент возвращается ошибка доступа тогда клиент пытается обновить токены используя реализованный метод refreshToken
При этом обработчик в 1с получит Cookie refreshToken и проверив валидность токена сгенерирует новую пару accessToken, refreshToken
ИначеЕсли ТипЗапроса = "refreshToken" Тогда
ДанныеОтвета = Авторизация.ПолучитьТокен(Cookie.Получить("refreshToken"));
Если ЗначениеЗаполнено(ДанныеОтвета.error) Тогда
Ответ = Новый HTTPСервисОтвет(401);
КонецЕсли;
https://habr.com/ru/company/acribia/blog/413157/ я не профессионал по безопасности, но судя по этой статье md5 используется для хранения паролей в других решениях типа Wordpress и Joomla в примере моего кода используется двойное хеширование
Добрый день! Весь бизнес в учётной системе на 1С, так же 1С имеет весь необходимый инструментарий для интегрирования и обмена данными, это http сервисы и работа с форматом json. Хочу отметить rest запросы к 1С работают хорошо, стабильно и быстро, в этом нареканий нет. Главное на стороне 1С запросы к БД и обработку результатов запроса делать попроще, чтоб быстро код работал. На данный момент с приложением работает около 300 водителей. С технической точки зрения это небольшая нагрузка, на работоспособность и быстродействие учётной системы 1С это ни как не повлияло. Сервера разные, сервер приложения 1С, сервер БД и web сервер на разных серверах. По поводу лицензий, на использование мобильного клиента 1С нужна лицензия, это было одной из причин не использовать мобильный клиент 1С. На http соединения к 1С лицензия не требуется и не расходуется из общего пула лицензий. Вопрос о промежуточной БД в качестве бэкэнда не рассматривался.
Добрый день! Спасибо за отзыв, попробую доработать статью. Первая проблема которая пришла сейчас в голову это поддержка опенсурсных библиотек. Например авторы библиотеки по работе с камерой в один прекрасный день на страничке гитхаба написали - мы устали поддерживать библиотеку и пускаем ее в свободное плавание, как говорится селяви. А сколько она проживет в свободном плаванье неизвестно, появляются новые устройства, новые версии android, фреймворка и т.д.
Добрый день! Обмен через REST сервис. POST запросы, в теле запросов json и ответ от сервера тоже в json. 1С имеет свои встроенные методы для сериализации и десериалицации json в свои типы данных, все очень удобно. JS на фронте соответсвенно json воспринимает как своё родное ). Хотя помню было время когда на стороне 1С приходилось вручную парсить json, то ещё удовольствие. Но время идет и 1С на месте стоит.
Добрый день! Вы все правильно написали. REST сервис. Не любитель soap сервисов, каждый раз когда стоит вопрос интегрировать 1С с чем нибудь через soap сервисы это какая-то боль. В какой-то момент 1С решил расширить стек технологией и порадовать разработчиков добавив REST.
Всем привет!
Система для коллективной оценки трудоемкости задач по методологии "покер планирования"
https://poker-planning.ru/
https://github.com/inzarubin80/PokerPlanning
Сделал поделку на эту тему
https://poker-planning.ru/
Еще хорошо бы выучить другой язык
Спасибо за статья, помогла разобраться.
Спасибо за статью, хотелось бы отметить что отсутствие возможности выполнять операции по записи по списку объектов очень ограничивают применимость платформы для заказчиков с большими объемами и приводит к запросам на запись в цикле.
22:39 Ростелеком, App store не работает.
Здраствуйте eachebotarev!
Спасибо за интерес, проявленный к публикации.
Основные моменты можно описать следующим образом
1. По кнопке войти выполняется post запрос к http сервису 1с
Для того что бы обращение попало в 1с для обработки, 1с http сервис сконфигурирован таким образом что все запросы выполняются под одним пользователем (vrd файл)
В модуле HS по типу запроса определяется обработчик
https://github.com/inzarubin80/authorization/blob/master/1c/HTTPServices/ВебПортал/Ext/Module.bsl
Данный метод проверяет соответствие имени и пароля значению которое хранится в регистре сведений "ПаролиВнешнихПользователей" и если находится соответствие то генерируется два ключа accessToken и refreshToken
В конфигурации используется реализация jwt токена на платформе 1С представленная Vasily Pintov https://github.com/pintov/1c-jwt
Запоминаю в 1с jti — (JWT id)
Возвращаю в в теле запроса {accessToken, refreshToken}
Устанавливаю Cookie
Ответ.Заголовки.Вставить("Set-Cookie","refreshToken='" + refreshToken + "'; HttpOnly");
На клиенте запоминаю полученный accessToken и в дальнейшем в заголовки защищенных запросов добавляю authorization
При обращении в к защищенному методу на стороне 1с проверяется валидность token, проверяется время жизни, проверяется что JWT id выдавался данному пользователю если все ок возвращается пользователь либо ошибка
Если на клиент возвращается ошибка доступа тогда клиент пытается обновить токены используя реализованный метод refreshToken
При этом обработчик в 1с получит Cookie refreshToken и проверив валидность токена сгенерирует новую пару accessToken, refreshToken
После чего на клиенте выполняет исходный запрос..
https://habr.com/ru/company/acribia/blog/413157/
я не профессионал по безопасности, но судя по этой статье md5 используется для хранения паролей в других решениях типа Wordpress и Joomla
в примере моего кода используется двойное хеширование
Что из этого следует?
Добрый день! Весь бизнес в учётной системе на 1С, так же 1С имеет весь необходимый инструментарий для интегрирования и обмена данными, это http сервисы и работа с форматом json. Хочу отметить rest запросы к 1С работают хорошо, стабильно и быстро, в этом нареканий нет. Главное на стороне 1С запросы к БД и обработку результатов запроса делать попроще, чтоб быстро код работал. На данный момент с приложением работает около 300 водителей. С технической точки зрения это небольшая нагрузка, на работоспособность и быстродействие учётной системы 1С это ни как не повлияло. Сервера разные, сервер приложения 1С, сервер БД и web сервер на разных серверах. По поводу лицензий, на использование мобильного клиента 1С нужна лицензия, это было одной из причин не использовать мобильный клиент 1С. На http соединения к 1С лицензия не требуется и не расходуется из общего пула лицензий. Вопрос о промежуточной БД в качестве бэкэнда не рассматривался.
Добрый день! Спасибо за отзыв, попробую доработать статью. Первая проблема которая пришла сейчас в голову это поддержка опенсурсных библиотек. Например авторы библиотеки по работе с камерой в один прекрасный день на страничке гитхаба написали - мы устали поддерживать библиотеку и пускаем ее в свободное плавание, как говорится селяви. А сколько она проживет в свободном плаванье неизвестно, появляются новые устройства, новые версии android, фреймворка и т.д.
Добрый день! Обмен через REST сервис. POST запросы, в теле запросов json и ответ от сервера тоже в json. 1С имеет свои встроенные методы для сериализации и десериалицации json в свои типы данных, все очень удобно. JS на фронте соответсвенно json воспринимает как своё родное ). Хотя помню было время когда на стороне 1С приходилось вручную парсить json, то ещё удовольствие. Но время идет и 1С на месте стоит.
Добрый день! Вы все правильно написали. REST сервис. Не любитель soap сервисов, каждый раз когда стоит вопрос интегрировать 1С с чем нибудь через soap сервисы это какая-то боль. В какой-то момент 1С решил расширить стек технологией и порадовать разработчиков добавив REST.