我正在构建一个由C#编写的Azure函数支持的React应用程序。我已经通过Userfront实现了JWT身份验证,前端工作正常,但我无法使用函数中的公钥验证令牌。
我尝试了多种方法,其中最近的是JWT-DotNet,但都没有成功。
请问有人可以提供一个可行的代码示例吗?
这是我目前的代码(在创建新的RS256Algorithm时出错,错误为“找不到请求的对象”):
我尝试了多种方法,其中最近的是JWT-DotNet,但都没有成功。
请问有人可以提供一个可行的代码示例吗?
这是我目前的代码(在创建新的RS256Algorithm时出错,错误为“找不到请求的对象”):
var headers = req.Headers;
if (!headers.TryGetValue("Authorization", out var tokenHeader))
return new StatusCodeResult(StatusCodes.Status403Forbidden);
var token = tokenHeader[0].Replace("Bearer ", "");
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(Environment.GetEnvironmentVariable("Userfront_PublicKey"));
var urlEncoder = new JwtBase64UrlEncoder();
var publicKey = urlEncoder.Encode(plainTextBytes);
try
{
IJsonSerializer serializer = new JsonNetSerializer();
var provider = new UtcDateTimeProvider();
IJwtValidator validator = new JwtValidator(serializer, provider);
IJwtAlgorithm algorithm = new RS256Algorithm(new X509Certificate2(plainTextBytes));
IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder,algorithm);
var json = decoder.Decode(token[0], publicKey, verify: true);
}
catch (TokenExpiredException)
...
catch (SignatureVerificationException)
...