Как правильно декодировать JWT(id_token)?

После ссылки на документы по декодированию JWT(id_token)

Я запутался, будут ли основные поставщики услуг следовать той же методике...

Microsoft oauth2.0 клиент в git проекте getUserEmailFromIdToken() функция не дополняет = знаки в зависимости от размера, например $extrapadds = $jwtTokenSize % 4;

и документы Yahoo OAuth2.0 openid id_token также нигде не упоминались. даже базовая строка не заменяет "-" и "_" на "+" и "/"

это потому, что эти поставщики услуг (Microsoft и Yahoo) не следовали стандартам или они каким-то образом нашли способ избежать таких сценариев

Пожалуйста, объясните мне... и поделитесь кодом, если это возможно, объясняющим правильный способ декодирования JWT id_token

1 ответ

Решение

Чтобы использовать декодер base64 на токене, закодированном в base64url (что и является JWT), заполнение на самом деле не требуется, просто рекомендуется спецификацией; см. Почему для кодирования base64 требуется заполнение, если входная длина не делится на 3?

Также: реализации декодера могут быть в состоянии справиться с заполнением самостоятельно.

Документы Yahoo действительно неверны, так как кодировка base64 отличается от кодировки base64url, а спецификация предписывает base64url: https://tools.ietf.org/html/rfc7519 Yahoo на самом деле не является поставщиком OPenID Connect (пока), так что возможно, это не было исправлено до Yahoo Oauth2/OpenIDconnect

Другие вопросы по тегам