Как правильно декодировать 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