我想知道如何使用分离的JWS验证HTTP消息。目前,我正在接收报头中的x-sign请求,如下所示
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-符号- JWS”,b)获取BASE64URL HTTP c)将生成字符串b)放入有效负载部分( d)验证JWS
但我对如何获得Base64URL HTTP主体感到困惑
任何帮助都将是非常感谢的,因为只有少数几篇关于这个主题的文章。
发布于 2022-01-07 13:59:45
JWS格式是base64url(header).base64url(payload).base64url(signature),注意三个组件之间的点分隔符。
分离的JWS仍然包含3个组件,但是有效负载被移除并提供在其他地方,通常有效负载是在HTTP主体中提供的。
要验证分离的JWS,您需要向分离的JWS添加base64url编码的有效负载。有效负载可从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'));```https://stackoverflow.com/questions/69232042
复制相似问题