Supposons que vous ayez une application ASP.NET Core dans laquelle vous souhaitez implémenter une authentification basée sur des jetons pour un Application AngularJS. L'application AngularJS fera une requête à une URL spécifique en transmettant un nom d'utilisateur et un mot de passe. L'API Web autorisera l'utilisateur et renverra un jeton d'accès, que l'application AngularJS utilisera dans les requêtes ultérieures.
Pour configurer votre application API Web ASP.NET Core pour les applications basées sur des jetons authentification :
Créer des constantes pour l'audience du jeton et l'émetteur :
const string TokenAudience = "Myself"; const string TokenIssuer = "MyProject";
Dans votre fichier Startup.cs, ajoutez ce qui suit à la méthode ConfigureServices :
var keySecret = authenticationConfiguration["JwtSigningKey"]; var symmetricKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(keySecret)); services.AddTransient(_ => new JwtSignInHandler(symmetricKey)); services.AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(options => { options.TokenValidationParameters.ValidateIssuerSigningKey = true; options.TokenValidationParameters.IssuerSigningKey = symmetricKey; options.TokenValidationParameters.ValidAudience = JwtSignInHandler.TokenAudience; options.TokenValidationParameters.ValidIssuer = JwtSignInHandler.TokenIssuer; });
Ajoutez la ligne suivante dans votre fichier Startup.cs, avant tout middleware nécessitant des informations utilisateur :
app.UseAuthentication();
Créez une classe pour gérer la génération de jetons JWT :
class JwtSignInHandler { public const string TokenAudience = "Myself"; public const string TokenIssuer = "MyProject"; private readonly SymmetricSecurityKey key; public JwtSignInHandler(SymmetricSecurityKey symmetricKey) { this.key = symmetricKey; } public string BuildJwt(ClaimsPrincipal principal) { var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var token = new JwtSecurityToken( issuer: TokenIssuer, audience: TokenAudience, claims: principal.Claims, expires: DateTime.Now.AddMinutes(20), signingCredentials: creds ); return new JwtSecurityTokenHandler().WriteToken(token); } }
Dans l'action du contrôleur où vous souhaitez renvoyer le jeton, appelez la méthode BuildJwt :
[HttpPost] public string AnonymousSignIn([FromServices] JwtSignInHandler tokenFactory) { var principal = new System.Security.Claims.ClaimsPrincipal(new[] { new System.Security.Claims.ClaimsIdentity(new[] { new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Name, "Demo User") }) }); return tokenFactory.BuildJwt(principal); }
Avec ces étapes, votre API Web ASP.NET Core L'application sera configurée pour utiliser l'authentification basée sur des jetons, permettant à votre application AngularJS d'accéder en toute sécurité aux ressources protégées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!