BASE64URL-ENCODE(SHA256(ASCII(code_verifier))) = code_challenge

1. arkber 21.04.20 10:58 Сейчас в теме
Добрый День.
Для работы с сервисом банка нужно получить code_challenge по формуле BASE64URL-ENCODE(SHA256(ASCII(code_verifier))), где code_verifier -случайная числовая последовательность от 43 до 128 символов.

В инструкции, которую банк предлагает, есть тестовый code_verifier - dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk, а тестовые code_challenge - E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM.

Я попытался средствами 1с8.3 получить тестовые значения code_verifier и code_challenge, но что ничего не получается. не пойму в чем дело.

Подскажите как в 1с8.3 при заданном code_verifier (dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk) получить по формуле получить code_challenge (E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM). Спасибо.
KidMo; svilsa; +2 Ответить
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. borda4ev 16 07.07.20 14:39 Сейчас в теме
Добрый день!
Искал решение своей проблеме, нашел ваш вопрос без ответа.
Base64 отличается от Base64url, заменой нескольких символов.

Функция Base64urlВСтроку(Знач СтрокаBase64)
	
	Пока СтрДлина(СтрокаBase64) % 4 <> 0 Цикл
		СтрокаBase64 = СтрокаBase64+ "=";
	КонецЦикла;
	
	СтрокаBase64 = СтрЗаменить(СтрокаBase64, "-", "+");
	СтрокаBase64= СтрЗаменить(СтрокаBase64, "_", "/");
	
	Возврат Base64Значение(СтрокаBase64);
	
КонецФункции
Показать
VyacheslavShilov; KotMurza; sulfur17; user682948_rusmaxval; KidMo; svilsa; +6 Ответить
3. rumik007 16.09.21 20:38 Сейчас в теме
Удалось ли решить BASE64URL-ENCODE(SHA256(ASCII(code_verifier))) = code_challenge
4. laperuz 47 17.09.21 05:34 Сейчас в теме
(3)
ВходнаяСтрока = "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk";
Хэш = Новый ХешированиеДанных(ХешФункция.SHA256);
Хэш.Добавить(ВходнаяСтрока);
	
СтрокаBase64 = Base64Строка(Хэш.ХешСумма);
СтрокаBase64 = СтрЗаменить(СтрокаBase64, "=", "");
СтрокаBase64 = СтрЗаменить(СтрокаBase64, "+", "-");
СтрокаBase64 = СтрЗаменить(СтрокаBase64, "/", "_");
	
ВыходнаяСтрока = СтрокаBase64;
Показать


Как-то так.
KotMurza; kamisov; user682948_rusmaxval; KidMo; Serg_1C_7_8; kar911; svilsa; +7 Ответить
5. svilsa 12 17.12.21 18:41 Сейчас в теме
(4) Спасибо!

Может еще кому-то пригодится: онлайн генерация codeChallenge из codeVerifier для тестирования
Serg_1C_7_8; kar911; +2 Ответить
6. poirus 11.12.23 09:01 Сейчас в теме
Мучаюсь с приорбанком уже месяц, поддержка ни как не помогает на все вопросы получаю ответ: на нашей стороне все запросы ок. Застрял на этапе получения токена для авторизации.
На первой стадии мы формируем запрос на получение Code. Пользователю демонстрируется веб поле в котором он может ввести логин, пароль и после авторизации подтвердить разрешение.

Далее пользователя переадресовывает на call back url, который у нас реализован в виде http сервиса, мы получаем код и формируем запрос из этого сервиса для получения токена. В ответ получаем код ответа 500. Тело получаем такое:

{"error": {"code": "serverError","message": "Internal Server Error."}}
7. Belander 27.11.24 12:40 Сейчас в теме
(6) Нашли как решить проблему? такая же история, а приор не реагирует никак..
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот