如何生成与JWT.IO网站相同的签名?

Bel*_*014 6 .net c# oauth azure jwt

JWT.IO网站对创建和验证JSON网络令牌调试器。

当我将我的秘密字符串复制并粘贴到VERIFY SIGNATURE块中时,我可以看到它生成了一个签名。

智威汤逊

我向下滚动页面,发现Microsoft实现的.NET解决方案。下载后,我添加了单元测试以手动生成签名。

单元测试

但是,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
Run Code Online (Sandbox Code Playgroud)

我注意到JWT.IO签名字符串是URL编码安全的,但是单元测试签名不是。

如何生成与JWT.IO网站相同的签名?

更新

下面被接受的答案使我上了课堂Base64UrlEncoder。我已经修改了单元测试以生成与JWT.IO网站完全相同的签名:

使用Base64UrlEncoder

Pet*_*Pan 5

@ Believe2014似乎jwt.io网站没有一些选项来指定base64编码,该编码使用哪种URLEncoding方式生成与单元测试相同的签名。

但是,根据的第4节和第5节RFC 4648,两个签名之间的区别在于字节62&使用不同的字符,63以及是否省略了填充字符=

因此,要将生成的签名转换jwt.io为您的签名,只需使用/代替_,使用+代替-,并=在签名末尾添加填充字符。