【问题标题】:google-api-nodejs-client / How to decode the id_token received from oauth2Client.getTokengoogle-api-nodejs-client / 如何解码从 oauth2Client.getToken 收到的 id_token
【发布时间】:2015-02-08 12:18:30
【问题描述】:

如何解码从 oauth2Client.getToken 收到的 id_token 以访问 JWT JSON 字段 email、sub、..? google-api-nodejs-client 库中是否包含功能? 在https://developers.google.com/accounts/docs/OpenIDConnect 中说:

由于大多数 API 库将验证与解码 base64 和解析 JSON 的工作结合在一起,因此您可能最终还是会在访问 ID 令牌中的字段时验证令牌。

oauth2Client.getToken(req.query.code, function(err, tokens) {
    // how to decode tokens.id_token to get 
});

【问题讨论】:

    标签: node.js oauth-2.0 google-api-nodejs-client


    【解决方案1】:

    根据RFC,JSON Web Token 在编码后由三部分组成(每部分都是一个 base64 编码的 JSON 对象),用点分隔:

    1. 标题
    2. 实际数据
    3. 签名

    与 Google API 一起使用时,标头几乎是一个常量。您将需要第二部分。

    为了更好地可视化这一点,请查看jwt.io - 它会以颜色显示编码令牌的确切结构!:)

    我建议你仔细研究它是如何工作的,然后安装一个 npm 模块(周围有很多,搜索 jwt)来为你做实际的解码。

    【讨论】:

    • 那么没有办法解码google-api-nodejs-client lib中包含的JWT?
    • 他们使用gapitoken 模块创建签名,通过检查源代码,该签名不包括解码功能。您必须为此安装一个单独的模块(或自己编写代码!)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 2019-03-17
    • 2013-10-23
    • 2015-06-24
    • 2013-12-27
    • 2016-06-12
    • 2018-05-31
    相关资源
    最近更新 更多