2017-02-14 96 views
0

由于某种原因,我想在我的jwt令牌中更改nbf有效负载值。我试图增加价值,但无法实现它。如何更改jwt.io令牌中的'nbf'值:C#

DateTime original = DateTime.Now; 
original = original.AddMinutes(-10); 
var seconds = original.Subtract(DateTime.MinValue).TotalSeconds; 
var claimsIdentity = new ClaimsIdentity(new List<Claim>() 
{ 
    new Claim("email",sresult.Properties["mail"][0].ToString()), 
    new Claim("sub", accountName), 
    new Claim("myv",seconds.ToString()), 
    new Claim("nbf",seconds.ToString()), 

我在那里犯错误,nbf值未更新与我的价值。实际nbf值为1487049869(系统生成的日期时间),但我的值为63622665869(比当前日期时间少-10分钟)。

+0

我只是重新审视我的答案,想知道这是对你有帮助。 – jps

+0

@jps :) unix时间有所帮助 –

回答

1

两件事情,我想起:

  1. 你没拿出你的代码在这里,所以我不能看到如何生成的令牌,但如果你有这样的事情:

    var token = new JwtSecurityToken(_issuer, audienceId, data.Identity.Claims, issued.Value.UtcDateTime, expires.Value.UtcDateTime, signingKey); 
    

那么第四个参数是所期望的NBF(不是之前)。其实你并不需要手动添加一个NBF要求,因为它是在JWT

  • 您的时间戳似乎很奇怪,我
  • 标准领域之一

    我的数值是63622665869(比现在的日期时间少了10分钟)。

    在智威汤逊的时间戳UNIX时间戳,从01.01.1970 00:00 UTC计数:https://tools.ietf.org/html/rfc7519#section-4.1.4解释说,数字日期用于EXP要求(同时还为NBF(不前)和IAT(在发行)权利要求书)

    https://tools.ietf.org/html/rfc7519#section-2定义了数字日期:

    ,A代表从 1970-01-01T00秒数JSON数值:00:00Z UTC直到指定UTC日期/时间,忽略 闰秒。

    所以智威汤逊将其解释你的价值(63622665869) 为02/14/3986 @上午10点44分(UTC) 或者完全不接受。

    有几个网站,你可以查看/转换您的时间戳,e.g这一个:http://www.unixtimestamp.com/