要解决ASP.NET拒绝使用jsonwebtoken生成的JWT的问题,您可以使用System.IdentityModel.Tokens.Jwt库来生成JWT。下面是一个代码示例来生成JWT:
using System;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using Microsoft.IdentityModel.Tokens;
public class JwtTokenGenerator
{
public string GenerateJwtToken(string secretKey, string issuer, string audience, string username, int expireMinutes = 60)
{
var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey));
var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
var claims = new[]
{
new Claim(JwtRegisteredClaimNames.Sub, username),
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
};
var token = new JwtSecurityToken(
issuer: issuer,
audience: audience,
claims: claims,
expires: DateTime.UtcNow.AddMinutes(expireMinutes),
signingCredentials: credentials
);
return new JwtSecurityTokenHandler().WriteToken(token);
}
}
使用示例:
string secretKey = "YourSecretKey";
string issuer = "YourIssuer";
string audience = "YourAudience";
string username = "JohnDoe";
JwtTokenGenerator tokenGenerator = new JwtTokenGenerator();
string jwtToken = tokenGenerator.GenerateJwtToken(secretKey, issuer, audience, username);
Console.WriteLine(jwtToken);
请替换"YourSecretKey"、"YourIssuer"、"YourAudience"为您自己的值,并根据您的需要调整expireMinutes的值。