【发布时间】:2017-11-11 07:36:00
【问题描述】:
我正在使用 android 库“io.jsonwebtoken:jjwt:0.7.0”来创建令牌,它正确地创建了我检查过的 JWT。我的问题是当我使用 php firebase/php-jwt 库进行解码时。两个库都设置为 HS256 和关键“测试”。我在这里做错了什么?
String compactJws = Jwts.builder()
.claim("devId", getDeviceId())
.signWith(SignatureAlgorithm.HS256, "testing")
.compact();
logger.i(compactJws);
日志为 eyJhbGciOiJIUzI1NiJ9.eyJkZXZJZCI6Ijc4MGQ1YWRlMzMwNGVhZmEifQ.XIKxG1xZbuMD8FRIAJ735LNbhodAj1a7pMZ6o3IF0ig
use \Firebase\JWT\JWT;
$jwt = "eyJhbGciOiJIUzI1NiJ9.eyJkZXZJZCI6Ijc4MGQ1YWRlMzMwNGVhZmEifQ.XIKxG1xZbuMD8FRIAJ735LNbhodAj1a7pMZ6o3IF0ig";
$key = "testing";
$decoded = JWT::decode($jwt, $key, array('HS256'));
print_r($decoded);
返回未捕获的异常“Firebase\JWT\SignatureInvalidException”,并带有消息“签名验证失败”
【问题讨论】:
-
在屏幕截图中检查了秘密 base64 编码
-
那么为什么你在代码中显示一个 JWT 而使用另一个呢?它的签名看起来无效,那么您的实际问题是什么?
-
我使用了错误的屏幕截图。我更新了我的代码
-
我也试过 $key = base64_encode("testing");
标签: php firebase-authentication jwt json-web-token