2017-02-14 15 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/