簡體   English   中英

如何更改jwt.io令牌中的'nbf'值:C#

[英]How to change 'nbf' value in jwt.io token : C#

由於某些原因,我想更改jwt令牌中的 nbf有效負載值。 我試圖增加價值,但無法實現。

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分鍾)。

我想到兩件事:

  1. 您沒有在此處顯示太多代碼,因此我看不到令牌的生成方式,但是如果您有類似以下內容:

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

那么第四個參數是所需的nbf(不在此之前)。 實際上,您不需要手動添加nbf聲明,因為它是JWT中的標准字段之一

  1. 您的時間戳對我來說似乎很奇怪

我的值是63622665869(比當前日期時間短-10分鍾)。

JWT中的時間戳是UNIX時間戳,從1970年1月1日00:00 UTC開始計數: https : //tools.ietf.org/html/rfc7519#section-4.1.4解釋了數字日期用於exp聲明(以及對於nbf(不早於)和iat(在發出)索賠)

https://tools.ietf.org/html/rfc7519#section-2定義數字日期:

一個JSON數值,表示從1970-01-01T00:00:00Z UTC到指定的UTC日期/時間為止的秒數,而忽略了leap秒。

因此,JWT會將您的值(63622665869)解釋為02/14/3986 @ 10:44 am(UTC)或完全不接受。

您可以在多個網站上查看/轉換時間戳,例如: http : //www.unixtimestamp.com/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM