我是这个领域的新手,但是我试图使用JWT nuget包生成JWT 。
我的理解是,您提供了一个用于对令牌进行签名的密钥,但是当我获得令牌时,我去了JWT网站进行测试,并且该网站能够在不提供密钥的情况下对其进行解码。
我以为您先生成令牌,然后再签名,因此可以阻止任何人知道令牌的内容,除非他们拥有该密钥。不是这样吗?
JSON Web令牌是数据结构的编码表示。不需要对该编码数据进行加密,但是这样做是可以接受的。
根据代码签名的定义:
代码签名是对可执行文件和脚本进行数字签名的过程,以确认软件作者并确保自使用密码哈希对代码进行签名以来,该代码没有被更改或破坏。
已加密的JWT通常具有两个哈希值,第一个用于解密数据,第二个用于验证代码签名。对未加密的JWT进行解码是一个标准化过程,即使未验证代码符号也可以完成。但是,如果代码签名哈希不匹配,建议不要在JWT中使用任何数据,因为这表明数据可能已被篡改。
并非所有的JWT实现都支持加密。值得注意的是,Microsoft的JWT实现中没有加密支持。https://stackoverflow.com/a/18224381/2495283。因此,如果您有必须确保保密的数据,则应使用JWE加密数据。JWT标准文档显示了此过程的示例。首先对数据进行加密,然后将加密的字符串和解码算法作为JWT的有效负载发送。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句