当前位置: 首页 > 知识库问答 >
问题:

无法在JWT中生成JWT令牌。带私钥的io

蒯华彩
2023-03-14

我试图测试我正在构建的一个关于JWT的软件的功能,以了解它,它使用Firebase JWT PHP包

我正在尝试创建一个使用密钥对作为编码/解码的测试用例,但无法获得http://jwt.io页面以使用我的密钥创建令牌。

这些是我使用ssh-keygen命令创建的密钥,没有任何修改。

我转到页面,选择HS256/384/512并删除页面默认设置的键。然后我粘贴我的私钥以便对我的数据进行签名。但是,该页面不会生成任何JWT。

我做错了什么?

我确实注意到页面中的示例键说RSA KEY,它们比我的短,这就是为什么我尝试了其他HS*选项

另外,如果我选择在密钥上设置密码,它是否适用于JWT?

-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----

平民的

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDYIDKzHwsTMa7cS9YpN/tjHw3friJ8l9b1ontuu2uDaQCFoGYfYzAM76ij++X7x81I43sANl6j+SN/1eC8PIrFbIJRcjG4U5YrL3i08LAgElvthH+0+Hddww16W2sv+SeGGNOcHNNFoCmO/aDaRvwkR2fp6B9LCEG7/MyNC2RaospM7upn5vfbNpdC8vGIBiV8v3AooyqV9G/hS7pMPNdkOCF9JndMjn4QhNy1otbjAj6y5XfGb3Ofz4tKep2RGFcHBbOFTkIKRYqUwCrpEQqyfRXeTJqPnzaCOVvjN1/+4lzedafvm49KXUOEwtPWSBufqihCVajtKVO92bZNtJwCAtfI9PZHBx5OTe/BRzmhkTziNXtgKqvCi+edwWTiyIEyz+fakdBpzrzVi2KgSyanc/LVPU8GNMuSqL1DWrmZIvdGYNjz1IrEDpoJtv64R/BL+pNJjB/qk9HS1d3kk8GgT12F/OxgZd6AsMB/1dL4a85wJ9GTkNa3jMiYy4wKFzM= jorgee@jorgee

共有1个答案

宋博易
2023-03-14

结果证明,密钥必须是PEM格式,而不是我的默认格式。

ssh-keygen -t rsa -b 2048 -m PEM -f mykey.key
# Don't add passphrase
openssl rsa -in mykey.key -pubout -outform PEM -out mykey.pub

示例私钥

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAqBfiDg2wY5S4ZCx58s2t1f6YjV6bPETX7Ru81loI0rgdDLqS
kEd2JmnxSEQ/7lvPvlMbHGPK0WkhQlBjyiIf8fTAo/Jts+Zh2V1ACBcV72pGyLBc
JGopDO9RYDGK/VNvni4osVb+QXDV9yo/o2fE86KE/yK5K5bz00YW27/C5SjXeJFb
CAdZzjuO02SXYWEJt3poNcew5kavHnUmx8fYr1MdIlvEe+auNArsF0uMz/1StWIx
0u349IQJBoWmtCXrVYStGZNrBvaSFa/MzR+h2XnUbDRnRUfN5drDoIq/qYMXbRoP
wFzLquARuJsHJVhO8+2fNQLt4lgBXFKYC/HX3wIDAQABAoIBADdxKS5ZdYRi2S6x
PMfI7z1V7Bs0yR7n1hBuxaotqBtYfrxkDVNpPp8M8nhTioKj5bFw19BVWeAYPNAS
k9dnygGUKLXqkCR2KG/5QdVpR+LfutkW0k1wdnm9tal0rdNAYeBaeTGE7/fFr80G
MldDMsLpJ9S/LzQhZeqZg5CXf0D13ran7r9ZsaxLBctY0WRYjvMKBCKIQhWWsxXH
Wl4gsTQqra/Ai4cswL2JgJ0YVizVOd9m0uBHBdTvIE+P6+HFgg7cE+wE1HUUrUuO
Gp9eneZCNWSKPykRIKAxPwW324M+/2lg3n7CMKqpAX0dcIvUSuxu5H9zqFtBp3zN
ODT8AwECgYEA1VC+MFoLMXsrfxjlTQaM1hdegbImiB/IdxJHXTJK6iVTHioYw9eC
Sn4Als42lggiQIX6L9akXqO6w/SdJRZHK3bIWc9fEfdyXIHx84Lim/9fDZQsdaFB
18nLin2CC+IXCCdWcY9fmSziS3gK2KjzaLE246ssWxS/kK2dfbrosxcCgYEAybqZ
r/5q/yJnM6fxl1IvHhNm2m2Agy/vPcYiOhNeDY7JNi1W9GxlDcAmx0emQ3ZuCQju
hKYkY/rji/RYW+NlblaD0xlm75ZTGno3DHtlapo+1MlBULmfJLVViHNLxFKSfpfP
ReTOZnMTa/uaEA7P4YPIJ5EhtU2SWBEvpJ4bnnkCgYEAlGw56Sq93w/0k9qesZl9
JPndqCBs7wouUatGPHJh7clKrBJeaOXqoipJ/qQ9FudR7dNK4T5X4AHMUcxCCywV
GQjtHpBLdhTWXceMsgK/6gsl+CzBQpeRWLPwC8yIT/xgSiwU2a8ItWuliR1dbqMf
uhiUOJVBp54oLGKg0nrarsECgYA2toyehkOg5UTWZtOItjqfTqXT0mVLr4GU4JtB
4yTcSoDaV9vAuXGDFD2wSQeYPpPDkY+XnLQ8Bb0XpXMdoQROs9pXNAmOK9hoUwOB
OCqeii1Gazty2JWIUEJdmt/O5JJlEWmfTFqKwOVgoUH83veU87giuyNIWDy79BVW
8acOCQKBgEtJIu9x/4ubpumPO94R6tyTTZVjCxJpnW3Nlc1/Ly/i/TbhYJ2BNlkz
JA2HxQSun456xqAJa38yo0Ciyq65hkO0BmHygwvgY0f6IKnq0dCzmD80/mrWK6cx
HqS++Bajrma/RQc+KGuyLqm/Ub5khTiWgszYjJ+GeD2d96YBXQ7I
-----END RSA PRIVATE KEY-----

示例公钥

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqBfiDg2wY5S4ZCx58s2t
1f6YjV6bPETX7Ru81loI0rgdDLqSkEd2JmnxSEQ/7lvPvlMbHGPK0WkhQlBjyiIf
8fTAo/Jts+Zh2V1ACBcV72pGyLBcJGopDO9RYDGK/VNvni4osVb+QXDV9yo/o2fE
86KE/yK5K5bz00YW27/C5SjXeJFbCAdZzjuO02SXYWEJt3poNcew5kavHnUmx8fY
r1MdIlvEe+auNArsF0uMz/1StWIx0u349IQJBoWmtCXrVYStGZNrBvaSFa/MzR+h
2XnUbDRnRUfN5drDoIq/qYMXbRoPwFzLquARuJsHJVhO8+2fNQLt4lgBXFKYC/HX
3wIDAQAB
-----END PUBLIC KEY-----
 类似资料:
  • 我被这个困扰了大约3天。基本上,我正在尝试使用Tymon在laravel中生成JWT令牌。这是我的控制器文件。 我使用Chrome postman测试了此api,但它报告了以下错误: JWT.php第73行出现错误异常:传递给Tymon\JWTAuth\JWT::fromUser()的参数1必须是第217行上的Tymon\JWTAuth\Contracts\JWTSubject、App\User给

  • 我尝试了https://spring.io/blog/2019/08/16/securing-services-with-spring-cloud-gateway示例,但我对所有的oauth部分感到困惑。

  • 后端服务器有一个endpoint,在ping时提供JSON响应,并受Apigee边缘代理的保护。目前,该endpoint没有安全性,我们希望为发出请求的所有客户端实现仅承载令牌身份验证。所有向API发出请求的客户端都将在授权承载中发送JWT令牌,Apigee Edge将用于验证JWT令牌。 我如何使用keydape生成这个JWT令牌? 此外,Apigee还需要一个JWT令牌来源的公钥(签署JWT令

  • 我使用docusign进行数字签名,在这里我必须创建一个jwt令牌。为此,我一直在使用git repo的代码https://github.com/docusign/docusign-python-client. 得到以下错误引起MaxRetryError(_pool,url,错误或响应错误(原因))urllib3.exceptions.MaxRetryError:HTTPSConnectionpo

  • 我正在阅读JWT的示例文件夹,我有点不确定验证令牌的工作原理。 这里直接使用“mySigningKey”在中签名 现在,对我来说,未解析就不那么清楚了: 是为了验证客户端返回的令牌字符串的签名是否有效,您是否需要 解码声明(在&MyCustomClaims{}中完成) 使用token.valid验证解码声明的签名部分对“令牌中包含的pub密钥”是否有效。 但这个例子只是解码密钥,通过“魔术”返回的

  • 我遵循本教程使用JWT令牌。令牌到期时间设置为仅5分钟,但如果我想在使用1分钟后使令牌无效,该怎么办?我希望能够对API进行调用,以删除我的令牌。 我正在使用Express和Node。 从我能收集到的信息来看,我的选择是拥有一个存储令牌的令牌db。当我想让我的令牌过期时,我会从DB中过期/删除该令牌。 我还看到人们随意地说“移除”物理硬盘空间中的令牌,但我无法找出令牌的物理存储位置,以便我移除它。