【发布时间】:2016-11-06 13:55:17
【问题描述】:
JWT.IO 网站有一个调试器,用于创建和验证 JSON Web 令牌。
当我将我的秘密字符串复制并粘贴到 VERIFY SIGNATURE 块中时,我可以看到它生成了一个签名。
我向下滚动页面,找到the .NET solution implemented by Microsoft。下载后,我添加我的单元测试以手动生成签名。
但是,JWT.IO 网站生成的签名与我的单元测试生成的签名略有不同。
Secrect string: "THIS IS A SECRET STRING WHICH CAN BE SHARED BETWEEN THE SERVICES"
Unit test signature: "B0d57pcHoDiTDE/98dyrMx9HoFKGLOcM094eYBgJqHo="
JWT.IO signature: B0d57pcHoDiTDE_98dyrMx9HoFKGLOcM094eYBgJqHo
我注意到 JWT.IO 签名字符串是 URL 编码安全的,但单元测试签名不是。
如何生成与 JWT.IO 网站相同的签名?
更新
下面接受的答案将我指向the class Base64UrlEncoder。我已经修改了我的单元测试以生成与 JWT.IO 网站完全相同的签名:
【问题讨论】: