如何使用 JWT.IO 网站创建 RS256 JWT?

Posted

技术标签:

【中文标题】如何使用 JWT.IO 网站创建 RS256 JWT?【英文标题】:How to create an RS256 JWT using JWT.IO website? 【发布时间】:2020-04-18 21:02:14 【问题描述】:

我正在尝试使用 JWT.IO 网站创建演示/测试 RS256 JWT。每次我尝试在该网站上创建 JWT 时,它都会说签名无效。

签名公钥是网站自动提供的

有什么我遗漏的技巧吗?

旁注 1:我已经取消了 kid 的值,因为我不确定它是否敏感......即使这只是一些用于学习/实验的蹩脚演示 JWT。

旁注 2:我实际上使用 Auth0 进行委托身份验证。我有一个完整的 RS256 令牌,Auth0 给了我……并且可以在 JWT.io 中显示……但我正在尝试将 exp 值修改为将来更远的值,为此,我需要使用 public/private 创建一个新的令牌。

【问题讨论】:

为什么有效载荷区域是粉红色的?出了点问题。 我知道 - 我完全被难住了。 【参考方案1】:

由于第二个文本框的占位符文本为 Private Key. Enter it in plain text only if you want to generate a new token. The key never leaves your browser.,您需要在第二个文本框中添加一个私钥才能编辑有效负载并重新生成令牌。

如果令牌是由 Auth0 生成的,那么它将使用您的租户私钥,该私钥在您创建该租户时自动生成。出于安全原因,您无权访问该私钥。

更新:如果您使用自己的私钥和公钥对生成令牌,您可以使用ssh-keygen 创建一个。确保您已经为您的操作系统安装了 ssh-keygen,然后转到命令行/终端提示符并键入以下内容

ssh-keygen -t rsa

接受默认设置(例如,在 Mac 上文件将保存在 /home/username/.ssh/ 中)并输入您的密码

该命令执行完毕后,您将获得两个文件id-rsaid-rsa.pub。一个没有任何扩展名的是你的私钥,一个带有.pub 的是你的公钥。使用 jwt.io 上这两个文件的内容来创建令牌。

【讨论】:

我试过了,上图就是那个结果。 有关更多信息,我尝试创建一个新的 RS256 JWT(使用该网站)。对于私钥,我刚刚使用了 Guid。对于公钥,我完全不确定该输入什么值。它是一些随机的Guid(再次)吗?还是我的 Auth0 租户的签名证书?最后,也不确定为什么它说我的有效负载数据无效。我需要一些最低限度的数据吗? For the private key, I've just used a Guid RSA 算法要求您以特定格式/方式生成密钥。请参阅此处en.wikipedia.org/wiki/RSA_(cryptosystem)#Key_generation 让我更新我的答案关于如何做到这一点 @Pure.Krome 有帮助吗 ^?

以上是关于如何使用 JWT.IO 网站创建 RS256 JWT?的主要内容,如果未能解决你的问题,请参考以下文章

.NET:RS256 签名的 JWT 中的签名无效

在 C# 中使用 RS256(非对称)验证 JWT

隐藏使用 RS256 PII 的 JWT SecurityTokenInvalidSignatureException

C#RSACryptoServiceProvider - JWT RS256验证失败

如何验证在 jwt.io 上使用 Keycloak 身份验证提供程序创建的 HS256 签名 JWT 令牌

使用 .NET Core 中的公共安全密钥配置 JWT Bearer 令牌验证