【发布时间】:2017-11-18 22:52:06
【问题描述】:
我正在使用 Tymon 的 JWTAuth 通过令牌以无状态方式将应用程序连接到 api。但问题是,当我解码令牌时,在有效负载数据上,iss 值就是 API url 本身。
如何更改值,以防止将密钥传递给令牌?
这是令牌的解码值(出于示例目的,我只是在此处编辑了值)
{
"iss": "http://localhost.com/api/",
"iat": 1111111111,
"exp": 2222222222,
"nbf": 3333333333,
"jti": "xxxxxxxxxxxxxx",
"sub": 1234,
"foo": "bar",
"baz": "bob"
}
我可以添加自定义声明,但无法删除 iss 键。
$token = $jwt->attempt($request->only(['username', 'password']));
$customClaims = ['foo' => 'bar', 'baz' => 'bob'];
$payload = $jwtFactory->customClaims($customClaims)->make(true);
$token = $jwt->encode($payload);
if ($token === false) {
echo 'invalid credentials';
} else {
echo 'valid user';
}
我什至尝试过:
$jwtFactory->iss('http://example.com')->foo(['lol'])->make();
只有foo 键或更确切地说是“自定义声明”值正在更改,而不是默认声明。但正如documentation 中所述,设置时可以更改默认声明值。
【问题讨论】:
-
您是否已从 jwt 配置的 required_claims 数组中删除?
-
@JigarShah 是的,我做到了,它仍然包含默认声明。
-
是的,它会按照 PayloadFactory 中的 defaultClaims
-
@JigarShah 是的,但是有没有办法不包括这些?或者甚至只是将
iss的值设置为其他值而不是请求 url?
标签: php laravel jwt lumen json-web-token