Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Melaksanakan Pengesahan JWT dalam API Web ASP.NET?
Melaksanakan Pengesahan JWT dalam API Web ASP.NET
Ikhtisar JWT
Token Web JSON (JWT) ialah token yang mengandungi tuntutan yang dikodkan kepada tiga bahagian berkod base64 yang dipisahkan oleh noktah. Tuntutan mengandungi maklumat tentang pengguna, kebenaran mereka dan masa tamat tempoh.
Melaksanakan pengesahan JWT
Untuk melaksanakan pengesahan JWT dalam API Web lama anda, anda boleh mengikuti langkah berikut:
Jana token JWT
Sahkan token JWT
Tatarajah
config.Filters.Add(new AuthorizeAttribute())
untuk mendayakan kebenaran untuk API anda. Contoh Kod
Jana token JWT:
<code class="language-csharp">private const string Secret = "[对称密钥]"; public static string GenerateToken(string username, int expireMinutes = 20) { var symmetricKey = Convert.FromBase64String(Secret); var tokenHandler = new JwtSecurityTokenHandler(); var now = DateTime.UtcNow; var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, username) }), Expires = now.AddMinutes(Convert.ToInt32(expireMinutes)), SigningCredentials = new SigningCredentials( new SymmetricSecurityKey(symmetricKey), SecurityAlgorithms.HmacSha256Signature) }; var stoken = tokenHandler.CreateToken(tokenDescriptor); var token = tokenHandler.WriteToken(stoken); return token; }</code>
Sahkan token JWT:
<code class="language-csharp">protected Task<IPrincipal> AuthenticateJwtToken(string token) { string username; if (ValidateToken(token, out username)) { var claims = new List<Claim> { new Claim(ClaimTypes.Name, username) // 根据需要添加更多声明 }; var identity = new ClaimsIdentity(claims, "Jwt"); var user = new ClaimsPrincipal(identity); return Task.FromResult(user); } return Task.FromResult<IPrincipal>(null); } private static bool ValidateToken(string token, out string username) { username = null; var tokenHandler = new JwtSecurityTokenHandler(); var jwtToken = tokenHandler.ReadToken(token) as JwtSecurityToken; if (jwtToken == null) return false; var symmetricKey = Convert.FromBase64String(Secret); var validationParameters = new TokenValidationParameters { RequireExpirationTime = true, ValidateIssuer = false, ValidateAudience = false, IssuerSigningKey = new SymmetricSecurityKey(symmetricKey) }; var principal = tokenHandler.ValidateToken(token, validationParameters, out _); return principal != null; }</code>
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pengesahan JWT dalam API Web ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!