|
Токен авторизации ЧЗ : Код состояния HTTP: 400. data не валидна MWWRuza, Волшебник, zva, fram_, Джордж1, privetik, linarval, AntiBuh, Fragster, Эх-эх-эх, diamkms, NikeArz, Санта Клаус, eddy_n, 1cVandal, AleksNew, Мультук, Zamestas, Шурик71, ПокаЕстьСмазкаЦикл, paramedic, Кир Пластелинин, vladko, 1snik_d, Гипервизор, Галахад, vbus, Ненавижу 1С, shuhard, Bad_Aleks
| ☑ | ||
|---|---|---|---|---|
|
0
linarval
09.10.26
✎
14:01
|
Добрый день.
Кто-нибудь сталкивался ? При попытке обновить токен ЧЗ в 1С, выдает ошибку: При выполнении запроса api/v3/true-api/auth/simpleSignIn возникла ошибка. Код состояния HTTP: 400. Текст ошибки: { "error_message": "data не валидна" }. На прошлой неделе все работало, щас в никакую. Патч EF_00_00944621 не помог. |
|||
|
1
NikeArz
09.10.26
✎
14:28
|
Да была такая ошибка.
После получения 1 части. data надо перевести в BASE64. Потом подписать. Когда будете подписывать укажите что CADESCOM_BASE64_TO_BINARY = 1; // входные данные пришли в Base64 |
|||
|
2
linarval
09.10.26
✎
14:33
|
(1) Не до конца понял, что за первая часть
При получении ключа сессии у нас дата же и так переводится в base64 https://yapx.ru/album/eRv1L |
|||
|
3
NikeArz
09.10.26
✎
14:38
|
(2) Ищите где подписывается data.
CADESCOM_BASE64_TO_BINARY = 1; // входные данные пришли в Base64 У вас скорее всего CADESCOM не понимает что data в BASE64 |
|||
|
4
NikeArz
09.10.26
✎
14:39
|
(2) У меня самописка. На вашей кон-фе не могу подробнее показать.
|
|||
|
5
NikeArz
09.10.26
✎
14:41
|
(2) Функция ПодписатьCAdES(ТекстДляПодписи, ComОбъектСертификата)
|
|||
|
6
NikeArz
09.10.26
✎
14:50
|
В ЧЗ документация по API. Там подробно об этом сказано.
|
|||
|
7
linarval
09.10.26
✎
14:57
|
(5) У меня при актуализации токена не идет в методы связанные с CADESCOM. Во всех конфе ERP, я нашел только два места где они используются.
|
|||
|
8
NikeArz
09.10.26
✎
15:38
|
1. Получение пары «uuid — data», где «uuid» — идентификатор текущей аутентификации,
«data» — строка на подпись пользователю. 2. Запрос авторизации обязателен для получения токена в формате jwt. 3. Отправка в Систему маркировки данных в том же виде, в котором данные были получены (пара «uuid — data»), только теперь «data» — это подписанная УКЭП строка. 4. Сервер отвечает на запрос сообщением с кодом 200 (ОК), либо сообщением об ошибке. URL: /auth/key Метод: GET Пример строки запроса: curl -X GET "<url стенда v3>/auth/key"-H "accept: application/json" Параметры ответа: Параметр Тип Обяз. Описание uuid string + Уникальный идентификатор сгенерированных случайных данных data string + Случайная строка данных Пример ответа: { } "uuid":"a63ff582-b723-4da7-958b-453da27a6c62", "data":"GNUFBAZBMPIUUMLXNMIOGSHTGFXZMT" 1.5.2. Получение ключа сессии при единой аутентификации ПРИМЕЧАНИЕ Поддержка токена в формате JWT сохранена до конца 2026 года URL: /auth/simpleSignIn Метод: POST Пример строки запроса: 19 curl -X POST "<url стенда v3>/auth/simpleSignIn"-H "accept: application/json"-H "Content-Type: application/json" Пример тела запроса: { "uuid":"string", "data":"string", "inn":"string", "details": "string", "unitedToken": true } Параметры тела запроса: Параметр Тип Обяз. Описание Комментарий uuid string + Уникальный идентификатор подписанных случайных данных Длина значения: 36 символов Допустимые символы: цифры, буквы латинского алфавита, дефис (-) data string + Подписанные УКЭП зарегистрированного участника оборота товаров случайные данные в base64 (присоединённая электронная подпись) inn string-ИНН организации, под которой требуется авторизация При получении токена в одном из форматов (UUID / JWT) обязательно указывается ИНН организации, если у физического лица (пользователя организации) есть действующая МЧД для получения доступа к ГИС МТ. В остальных случаях параметр необязателен Длина значения: 10 или 12 цифр 20 Параметр Тип Обяз. Описание Комментарий details string-Реквизиты действующего аттестата соответствия объекта информатизации, выданного органом по аттестации объектов информатизации unitedToken boolean-Признак запроса единого токена в виде uuid Обязательно заполнен при получении токена в формате UUID. true — запрос токена в формате UUID (единый токен аутентификации); false — запрос токена в формате jwt (по умолчанию) Пример ответа: 1. В случае успеха получения токена в формате JWT: { "token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e.........mk6qe0lB12w9zEs" } 2. В случае успеха получения токена в формате UUID: { "token": "string", "uuidToken": "123e4567-e89b-12d3-a456-426655440000", "expireDate": "2026-10-10T00:00:00.123Z" } |
|||
|
9
MWWRuza
гуру
09.10.26
✎
17:08
|
data просто подписываете прикрепленной ЭЦП как есть, ничего специально, заранее, переводить в Басе64 не нужно. Единственное, если КриптоПро возвращает ЭЦП блоками, то переводы строк надо убрать, должна быть одна длинная строка.
Если что - у меня это все в 7.7 работает нормально, не разберетесь, можно будет посмотреть как у меня сделано и тогда Вам возможно проще у себя ошибку найти будет. |
|||
|
10
linarval
09.10.26
✎
17:26
|
(9) Можете пожалуйста показать?
|
|||
|
11
MWWRuza
гуру
09.10.26
✎
17:40
|
(10) Что конкретно не получается?
|
|||
|
12
MWWRuza
гуру
09.10.26
✎
17:41
|
Подпись сформировалась?
Покажите? Можно картинкой... |
|||
|
13
MWWRuza
гуру
09.10.26
✎
17:51
|
Должно получиться перед передачей в запрос, что-то типа такого:
![]() Кусок естественно вырезан, но, понять можно - одна большая строка, 4 с лишним тысячи символов длиной. |
|||
|
14
linarval
09.10.26
✎
17:52
|
(12) Я не могу найти метод для подписания data
|
|||
|
15
MWWRuza
гуру
09.10.26
✎
18:18
|
(14) Ах, вон оно что...
Тут сложнее. Я вообще-то клюшечник застарелый, и х.з., как это правильно в типовых 8.3 делается. Но, один раз я все-таки делал в 8.3, но "по своему разумению", наверняка это велосипед, и там скорее всего свои методы для этого есть. Но, работает! Вот, Подписание КриптоПро: Подробности&НаКлиенте
Функция ПодписатьТекстЦРПТ(ТекстДляПодписи, Сертификат, bDetached)
ВходящиеДвоичныеДанные = Base64Строка(ПолучитьДвоичныеДанныеИзСтроки(ТекстДляПодписи));
CADESCOM_BASE64_TO_BINARY = 1; // Входные данные пришли в Base64
CADESCOM_CADES_TYPE = 1; // Тип усовершенствованной подписи
CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0; // Атрибут штампа времени подписи
oSigner = Новый COMОбъект("CAdESCOM.CPSigner");
oSigner.Certificate = Сертификат;
oSigningTimeAttr = Новый COMОбъект("CAdESCOM.CPAttribute");
oSigningTimeAttr.Name = CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME;
oSigningTimeAttr.Value = ТекущаяДата();
oSigner.AuthenticatedAttributes2.Add(oSigningTimeAttr);
ТекстДляПодписи = СокрЛП(ТекстДляПодписи);
oSignedData = Новый COMОбъект("CAdESCOM.CadesSignedData");
oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
oSignedData.Content = ВходящиеДвоичныеДанные;
EncodingType = 0;
sSignedMessage = oSignedData.SignCades(oSigner, CADESCOM_CADES_TYPE, bDetached, EncodingType);
Возврат sSignedMessage; // Подпись в формате Base64
КонецФункцииТретий параметр, bDetached, булево - true прикрепленная, false открепленная. Разбирайтесь, не получится пишите, посмотрим. |
|||
|
16
MWWRuza
гуру
09.10.26
✎
20:13
|
(0) На прошлой неделе все работало, щас в никакую. Патч EF_00_00944621 не помог.
Стоп... Вы в какой-то типовой работаете... Я то думал, что что-то свое. Меня вот это: (4) У меня самописка. С толку сбило, не внимательно прочитал. Тогда - забейте на то, что я в (13) и (15) написал... Вам нужно разбираться, что с обновлением не так. Там, с начала этого месяца изменился метод получения "Единого токена UUID", раньше его получали одним запросом, отправляя подписанный ИНН, а теперь двумя, как в (8) Вам написали. Почему это не работает у Вас - тут я Вам не подскажу... Типовые любят обовления. Обновите до последнего релиза, и скорее всего заработает. Патчи тут не всегда помогают. |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |