相关疑难解决方法(0)

如何使用在线工具手动验证JWT签名

根据我的理解,验证JWT签名是一个直接的过程.但是,当我使用一些在线工具为我做这件事时,它并不匹配.如何在JWT不使用JWT库的情况下手动验证签名?我需要一种快速方法(使用可用的在线工具)来演示如何完成此操作.

JWThttps://jwt.io/#debugger-io上创建了我的以下信息:

  • 算法: HS256
  • 秘密: hONPMX3tHWIp9jwLDtoCUwFAtH0RwSK6
  • 标题:
    {
      "alg": "HS256",
      "typ": "JWT"
    }
    
  • 有效载荷:
    {
      "sub": "1234567890",
      "name": "John Doe",
      "iat": 1516239022
    }
    
  • 验证签名(部分):
    • 秘密值改为上面
    • "已检查"秘密base64编码(无论是否检查,仍然获得不同的值)

智威汤逊:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.wDQ2mU5n89f2HsHm1dluHGNebbXeNr748yJ9kUNDNCA

手动JWT签名验证尝试:

使用base64UrlEncode计算器(http://www.simplycalc.com/base64url-encode.phphttps://www.base64encode.org/)

如果我:( 不是站点上的实际值,修改后显示最终为我构建的工具)

base64UrlEncode("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9") + "." + base64UrlEncode("eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ")

我明白了:

ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5.ZXlKemRXSWlPaUl4TWpNME5UWTNPRGt3SWl3aWJtRnRaU0k2SWtwdmFHNGdSRzlsSWl3aWFXRjBJam94TlRFMk1qTTVNREl5ZlE=

注意:如果我应该对已经编码的值进行编码,或者按原样使用已经编码的值,那么我会有一些困惑.

(即使用base64UrlEncode("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9") + "." + base64UrlEncode("eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ")vs "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ").

无论我应该做什么,最终结果仍然与签名不符.我倾向于认为我应该重新编码的编码值,不管是真还是假.

然后使用HMAC Generator计算器(https://codebeautify.org/hmac-generatorhttps://www.freeformatter.com/hmac-generator.html#ad-output)

(不是网站上的实际价值,经过修改以显示最终为我构建的工具)

HMACSHA256( …

jwt

5
推荐指数
2
解决办法
2200
查看次数

标签 统计

jwt ×1