Вопрос:
является ли client_id необязательным при вызове метода POST/ token? Еще как вижу, из POST/token убрали обязательность client_id. Если для нас client_id обязательный в теле запроса - это ОК?
Ответ:
Что такое LMB16?
Функция LMB16 (Leftmost Bytes 16) — это метод обработки данных, при котором из значения хэш-функции берутся только первые 16 байт. Она применяется в протоколах OpenID Connect и OAuth 2.0 для проверки хэш-значений:
- c_hash — хэш для кода авторизации.
- s_hash — хэш для состояния (state).
- at_hash — хэш для токена доступа.
Эти хэши используются для защиты от атак на целостность данных и атак повторного воспроизведения (replay attacks).
Как работает LMB16?
- Хэширование исходных данных:
Данные (например, код авторизации) обрабатываются с использованием хэш-функции, например, SHA-256 или ГОСТ Р 34.11-2012.- Извлечение первых 16 байт:
Из полученного хэш-значения берутся первые 16 байт (128 бит).- Кодирование в Base64url:
Результат извлечения кодируется в формате Base64url для компактного представления.Пример применения LMB16
Исходные данные:
Код авторизации: abc123Шаги обработки:
- Хэширование:
Хэш-значение: d45f4e10b19eb37cd5e2337eaf7c22f93c4c774d83ac91772fd7a8d75b49e0da
Длина: 32 байта (256 бит)- Извлечение первых 16 байт (LMB16):
LMB16: d45f4e10b19eb37cd5e2337eaf7c22f9
Длина: 16 байт (128 бит)- Кодирование в Base64url:
Результат: 1F9P4kDbLTHXGsz94W-GПрименение в OpenID Connect
Для проверки хэш-значений сервер или клиент выполняет следующие действия:
- Берёт значение хэша из токена (например, c_hash).
- Вычисляет хэш данных (например, кода авторизации).
- Применяет функцию LMB16
- Кодирует результат в Base64url.
- Сравнивает результат с предоставленным значением в токене.
Заключение
LMB16 — это метод извлечения первых 16 байт хэш-значения, который широко используется в OpenID Connect и OAuth 2.0 для обеспечения компактного и надёжного представления данных.