解码 JWT(id_token) 的正确方法是什么?

What is the correct way to decode JWT(id_token)?

参考后JWT(id_token) decoding docs

我很困惑主要的服务提供商是否会采用相同的技术...

git projectgetUserEmailFromIdToken()函数中的Microsoft oauth2.0客户端没有根据大小填充额外的=符号,例如$extrapadds = $jwtTokenSize % 4;

和 Yahoo OAuth2.0 openid id_token docs 也没有在任何地方提及。甚至 基本字符串也不能将“-”和“_”替换为“+”和“/”

是因为这些服务提供商(微软和雅虎)没有遵守标准,还是他们以某种方式找到了避免这种情况的方法

请澄清一下...并尽可能分享代码以解释解码 JWT 的正确方法 id_token

要在 base64url 编码的令牌(这就是 JWT)上使用 base64 解码器,填充并不是真正需要的,只是规范推荐的;见 Why does base64 encoding require padding if the input length is not divisible by 3?

此外:解码器实现可能能够自行处理填充。

Yahoo 文档确实是错误的,因为 base64 编码不同于 base64url 编码,并且规范规定了 base64url:https://www.rfc-editor.org/rfc/rfc7519#section-3 Yahoo is not a really OPenID Connect provider (yet) so that may be why it wasn't fixed before Yahoo Oauth2/OpenIDconnect