【问题标题】:Laravel or Lumen JWT remove default claimsLaravel 或 Lumen JWT 删除默认声明
【发布时间】: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


【解决方案1】:

我能够通过设置自定义声明来覆盖默认声明的值,其中自定义声明的值是默认声明。

$customClaims = ['iss' => 'xxx', 'baz' => 'bob'];
$payload = $jwtFactory->customClaims($customClaims)->make();

有了这个,iss(默认声明)的值现在是xxx。这在documentation 上看起来很奇怪,它有一种不同的方式来重写默认声明,这是行不通的。

【讨论】:

    【解决方案2】:

    要将 iss 值设置为 null 或您可能需要修改 iss() 的任何其他值

    public function iss()
        {
            return NULL;
            // return $this->request->url();
        }
    

    之后你会得到解码后的令牌

    array:6 [
      "sub" => 4
      "iss" => null // I have set value to null
      "iat" => 1497603439
      "exp" => 1497963439
      "nbf" => 1497603439
      "jti" => "O6zdDsWKt3X7hszh"
    ]
    

    编辑

    你可以试试这个吗:

    if ( !$token = JWTAuth::attempt( $credentials, array( 'iss' => NULL ) ) ) 
    

    我已经对此进行了测试,它对我有用。同样为此我们不需要在包文件中进行更改

    希望有效

    【讨论】:

    • 是的,试过了,但我认为这不是最好的方法,因为我们直接修改它。有什么方法可以通过不接触代码库来覆盖它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 2017-10-19
    • 2023-03-20
    • 2017-09-17
    • 2017-02-16
    • 1970-01-01
    相关资源
    最近更新 更多