简体   繁体   English

ASP.NET 核心:创建带有无效日期的 JWT 令牌

[英]ASP.NET Core : create JWT token with invalid date

I'm trying to get an JWT token:我正在尝试获取 JWT 令牌:

public async Task<string> GetAccessToken()
{
    var exp = await context.GetTokenAsync("expires_at");
    var expires = DateTime.Parse(exp);

    if (expires > DateTime.Now)
    {
        return await context.GetTokenAsync(OpenIdConnectParameterNames.AccessToken);
    }

    return await GetRefreshedAccessToken();
}

But when I put the JWT string that was accepted in the token in https://token.dev/但是当我将令牌中接受的 JWT 字符串放入https://token.dev/

I get invalid date on "auth_time" - why and how can I fix it?我在“auth_time”上得到无效日期 - 为什么以及如何解决它?

在此处输入图像描述

In JWT, the fields about time are in Unix Timestamp format. JWT中关于时间的字段是Unix Timestamp格式。

在此处输入图像描述

You need to convert your time to this format.您需要将时间转换为这种格式。

[HttpGet("GetUnixTimeStamp")]
public string GetAccessToken()
{
    string dateStart = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:sszzz");
    DateTime Start = DateTime.ParseExact(dateStart, "yyyy-MM-ddTHH:mm:sszzz", System.Globalization.CultureInfo.InvariantCulture);

    long unixStart = (long)Start
        .ToUniversalTime()
        .Subtract(DateTime.UnixEpoch)
        .TotalSeconds;
    return unixStart.ToString();
}

在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM