javascript - JWT sha256 哈希与 Internet 草稿示例不匹配

标签 javascript json google-apps-script jwt

我一直致力于让 JWT 在 Google Apps 脚本中工作。由于我的结果很糟糕,所以我去了 JWS Internet-Draft: http://self-issued.info/docs/draft-ietf-jose-json-web-signature.html#HS256Encoding

使用这个示例对象: {“iss”:“乔”, “exp”:1300819380, “http://example.com/is_root “:真

代码片段:

var eClaim = UTF8.encode(JSON.stringify(claim));
eClaim = Base64EncodeUrl(eClaim);

我的 Base64url 是:

eyJpc3MiOiJqb2UiL----CJleHAiOjEzMDA4MTkzODAs----Imh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ

(- 由我添加)

规范说明我应该得到什么:

eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ

我的编码对象中有间隙(我再次添加 ---- 以显示间隙)。虽然它可能是\n、\r 或\t,但没有一个符合预期结果。我确实将示例粘贴到在线 base64url 编码器/解码器中。我的 base64 解码完美,示例 JSON 编码与我的完全一样。是我做错了什么还是互联网草案不正确?

最佳答案

你说你试过\r 和\n ,但这是我在解码后确定的 你的 sample 。

区别在于示例版本中的换行符CRLF

他们的:

0000000  7b  22  69  73  73  22  3a  22  6a  6f  65  22  2c  0d  0a  20
          {   "   i   s   s   "   :   "   j   o   e   "   ,  cr  nl  sp
0000020  22  65  78  70  22  3a  31  33  30  30  38  31  39  33  38  30
          "   e   x   p   "   :   1   3   0   0   8   1   9   3   8   0
0000040  2c  0d  0a  20  22  68  74  74  70  3a  2f  2f  65  78  61  6d
          ,  cr  nl  sp   "   h   t   t   p   :   /   /   e   x   a   m
0000060  70  6c  65  2e  63  6f  6d  2f  69  73  5f  72  6f  6f  74  22
          p   l   e   .   c   o   m   /   i   s   _   r   o   o   t   "
0000100  3a  74  72  75  65  7d
          :   t   r   u   e   }
0000106

你的:

0000000  7b  22  69  73  73  22  3a  22  6a  6f  65  22  2c  22  65  78
          {   "   i   s   s   "   :   "   j   o   e   "   ,   "   e   x
0000020  70  22  3a  31  33  30  30  38  31  39  33  38  30  2c  22  68
          p   "   :   1   3   0   0   8   1   9   3   8   0   ,   "   h
0000040  74  74  70  3a  2f  2f  65  78  61  6d  70  6c  65  2e  63  6f
          t   t   p   :   /   /   e   x   a   m   p   l   e   .   c   o
0000060  6d  2f  69  73  5f  72  6f  6f  74  22  3a  74  72  75  65  7d
          m   /   i   s   _   r   o   o   t   "   :   t   r   u   e   }
0000100

据我了解,JSON 不需要在分隔符逗号后换行。

关于javascript - JWT sha256 哈希与 Internet 草稿示例不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27520932/

相关文章:

javascript - 替换 JavaScript 对象中的值中的字符串

javascript - 在 jquery 中通过 $.post 发送对象键和值的列表

json - Grails对请求和响应的通用JSON处理

r - 有没有办法在 R 中的 Google Sheet 中进行一些格式化

javascript - 有没有办法从应用程序脚本中的 graphql API 获取数据?

javascript - 使用 Jquery 选中/取消选中多个复选框

javascript - 在 Vue.js 中使用 HighCharts 绘制 json 图表

javascript - JSON 元素选择

javascript - Google Sheets 脚本 onOpen(e) 将新行添加到工作表

javascript - Thymeleaf 如何验证复选框?