簡體   English   中英

ASP.NET 核心 Web API:JWT 令牌驗證與 Gmail 供應商

[英]ASP.NET Core Web API : JWT token validation with Gmail provider

我有一個 NextJS 前端,它使用 Gmail 進行身份驗證,並從 ID 令牌獲取用戶信息,這是一個 JWT 令牌。 ASP.nET Core Web API 獲取此 ID 令牌。

現在,您如何驗證 ASP.NET Core 中的令牌並從令牌中獲取聲明?

您可以使用 Microsoft.IdentityModel.Tokens 庫驗證 ASP.NET Core 中的 JWT 令牌。 這是代碼:

public int? ValidateToken(string token)
{
    if (token == null) 
        return null;

    var tokenHandler = new JwtSecurityTokenHandler();
    var key = Encoding.ASCII.GetBytes(_appSettings.Secret);
    try
    {
        tokenHandler.ValidateToken(token, new TokenValidationParameters
        {
            ValidateIssuerSigningKey = true,
            IssuerSigningKey = new SymmetricSecurityKey(key),
            ValidateIssuer = false,
            ValidateAudience = false,
            // set clockskew to zero so tokens expire exactly at token expiration time (instead of 5 minutes later)
            ClockSkew = TimeSpan.Zero
        }, out SecurityToken validatedToken);

        var jwtToken = (JwtSecurityToken)validatedToken;
        var userId = int.Parse(jwtToken.Claims.First(x => x.Type == "id").Value);

        // return user id from JWT token if validation successful
        return userId;
    }
    catch
    {
        // return null if validation fails
        return null;
    }
}

暫無
暫無

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

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