首页 > 解决方案 > 如何在 Dotnet Core MVC 应用程序中验证 Firebase 生成的 JWT

问题描述

我在 dotnet 核心 MVC 应用程序中从 Firebase Admin SDK 生成 JWT,如下所示:

FirebaseApp.Create();

...
    
await FirebaseAuth.DefaultInstance.CreateCustomTokenAsync(user.Id, additionalClaims);

但是,我将 JWT 传递回 dotnet core MVC 应用程序,我无法对其进行验证:

var key = Encoding.ASCII.GetBytes("-----BEGIN PRIVATE KEY-----...-----END PRIVATE KEY-----\n");

        var tokenHandler = new JwtSecurityTokenHandler();
        tokenHandler.ValidateToken(token, new TokenValidationParameters
        {
            ValidateIssuerSigningKey = true,
            IssuerSigningKey = new SymmetricSecurityKey(key),
            ValidateIssuer = false,
            ValidateAudience = false,
        }, out SecurityToken validatedToken);

我得到的错误是:

  Microsoft.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException : IDX10501: Signature validation failed. Unable to match key: 
    kid: 'System.String'.
    Exceptions caught:'System.Text.StringBuilder'. 
    token: 'System.IdentityModel.Tokens.Jwt.JwtSecurityToken'.

我确定我一定是错误地指定了签名密钥,但我无法解决。

标签: firebase.net-corefirebase-authenticationjwt

解决方案


推荐阅读