【问题标题】:What is the correct way to decode JWT(id_token)?解码 JWT(id_token)的正确方法是什么?
【发布时间】:2016-03-04 23:41:27
【问题描述】:

参考后JWT(id_token) decoding docs

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

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

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

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

请澄清我......如果可能的话,分享一个代码来解释解码 JWT id_token的正确方法

【问题讨论】:

    标签: azure openid jwt yahoo-api outlook-restapi


    【解决方案1】:

    要在 base64url 编码的令牌上使用 base64 解码器(JWT 就是这样),实际上不需要填充,只是规范推荐;见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-3Yahoo 不是真正的 OPenID Connect 提供者(还)所以这可能是它在@987654323 之前没有修复的原因@

    【讨论】:

    • 同意汉斯。我猜你也在 GitHub 存储库上发布了这个:)。在那里查看我的答案(与 Hans 相呼应):github.com/jasonjoh/php-tutorial/issues/6
    • @Hans Z. 通过说“Yahoo 还不是真正的 OPenID Connect 提供商”,您是否仍然认为这是因为您的 previous post 是在 2015 年 1 月,而今天是 2016 年 3 月。如果您有任何参考资料可以检查 yahoo / microsoft / google 是否是 openid 连接提供商,请在此处分享...这将有很大帮助
    • @JasonJohnston github 中的解释澄清了我......您可以在这里分享相同的解释以供将来参考,它可能会帮助有同样疑问的人
    • @Hans Z。我提到了“developer.yahoo.com/openid”,他们(雅虎)声称他们支持 openID。谚语是这样的->第二段中的“这就是为什么我们是OpenID的巨大支持者”...请编辑答案的后面部分...这可能会误导人们...
    • 那是 OpenID 2.0,它与 OpenID Connect 完全不同,正如我链接到的文章中所解释的那样
    猜你喜欢
    • 2020-11-03
    • 1970-01-01
    • 2012-10-10
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 2016-11-25
    相关资源
    最近更新 更多