Heim >Backend-Entwicklung >C++ >Wie implementiert man die JWT-Authentifizierung in der ASP.NET-Web-API?
JWT-Authentifizierung in der ASP.NET-Web-API implementieren
JWT-Übersicht
Ein JSON Web Token (JWT) ist ein Token, das Ansprüche enthält, die in drei durch Punkte getrennte Base64-codierte Teile codiert sind. Der Anspruch enthält Informationen über den Benutzer, seine Berechtigungen und die Ablaufzeit.
JWT-Authentifizierung implementieren
Um die JWT-Authentifizierung in Ihrer alten Web-API zu implementieren, können Sie die folgenden Schritte ausführen:
JWT-Token generieren
JWT-Token überprüfen
Konfiguration
config.Filters.Add(new AuthorizeAttribute())
, um die Autorisierung für Ihre API zu aktivieren. Codebeispiel
JWT-Token generieren:
<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>
JWT-Token überprüfen:
<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>
Das obige ist der detaillierte Inhalt vonWie implementiert man die JWT-Authentifizierung in der ASP.NET-Web-API?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!