【问题标题】:How to Validate HTTP message with JWS Detached如何使用 JWS Detached 验证 HTTP 消息
【发布时间】:2021-11-12 20:10:22
【问题描述】:

我想知道如何使用 JWS Detached 验证 HTTP 消息。目前,我在标题中收到 x-sign-jws 请求,如下所示

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..UXwjHxU3tFlrzPMupG04zROiEcHFQpCg3l7J4Axr1fE

我需要使用我的密钥验证请求是否正确

例如:12345678

我正在使用 firebase/jwt 并尝试以下代码

$hed = getallheaders();
$recievedJwt = $hed["X-Sign-Jws"];
$decoded = JWT::decode($recievedJwt, $secret_key, array('JWT','HS256'));```

但我没有得到任何结果。

我在网上搜索我找到了提到以下步骤的文章:

带有 JWS 分离的验证 HTTP 消息: a) 获取 HTTP 标头“x-sign-jws”, b) 获取 BASE64URL HTTP 正文 c) 将生成字符串 b) 放入 Payload 部分 d) 验证 JWS

但我对如何获取 Base64URL HTTP 正文感到困惑

任何帮助都将不胜感激,因为只有几篇关于此主题的文章。

【问题讨论】:

    标签: jwt json-web-signature


    【解决方案1】:

    JWS 格式为base64url(header).base64url(payload).base64url(signature),注意三个组件之间的点分隔符。

    分离的 JWS 仍然包含 3 个组件,但有效负载被移除并在其他地方提供,通常有效负载在 HTTP 正文中提供。

    要验证分离的 JWS,您需要将 base64url 编码的有效负载添加到分离的 JWS。有效负载可从您的 HTTP 正文获得。

    例如;

    x-sign-jws = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..UXwjHxU3tFlrzPMupG04zROiEcHFQpCg3l7J4Axr1fE
    
    //split x-sign-jws into array using delimiter .
        
    x-sign-jws-attached = x-sign-jws-split[0] + '.' + base64Url(HTTPRequest.Body) + '.' + x-sign-jws-split[1]
    

    现在可以验证x-sign-jws-attached,如下图;

    $decoded = JWT::decode($x-sign-jws-attached, $secret_key, array('JWT','HS256'));```
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-09
      • 2015-12-22
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-24
      相关资源
      最近更新 更多