Maison > développement back-end > C++ > Comment configurer l'authentification basée sur les jetons dans l'API Web ASP.NET Core pour les applications AngularJS ?

Comment configurer l'authentification basée sur les jetons dans l'API Web ASP.NET Core pour les applications AngularJS ?

Linda Hamilton
Libérer: 2024-12-30 14:23:13
original
403 Les gens l'ont consulté

How to Configure Token-Based Authentication in ASP.NET Core Web API for AngularJS Applications?

Configuration de l'authentification basée sur des jetons dans ASP.NET Core WebApi

Défi

Dans les applications ASP.NET Core, la mise en œuvre de l'authentification basée sur des jetons peut être un défi. Les exemples conventionnels tournent généralement autour de l’authentification par cookie ou de fournisseurs d’authentification externes. Cependant, lorsque vous travaillez avec un scénario dans lequel une application AngularJS demande un jeton à un point de terminaison /token, en transmettant le nom d'utilisateur et le mot de passe, il est crucial de comprendre comment configurer l'application WebApi en conséquence.

Configuration de l'authentification

Pour configurer l'authentification basée sur des jetons dans ASP.NET Core WebApi, suivez ces étapes :

  1. Définir Propriétés du jeton : Commencez par créer des constantes pour les paramètres du jeton, y compris l'audience du jeton et l'émetteur.
const string TokenAudience = "Myself";
const string TokenIssuer = "MyProject";
Copier après la connexion
  1. Configurer les services DI :

    • Dans votre méthode Startup.cs ConfigureServices, ajoutez l'injection de dépendances pour le JwtSignInHandler class.
    • Configurez l'authentification par défaut sur JWT et définissez les paramètres de validation du jeton.
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;
    });
Copier après la connexion
  1. Activer le middleware d'authentification : ajoutez le middleware UseAuthentication dans le pipeline de requêtes avant tout middleware nécessitant l'utilisateur informations.
app.UseAuthentication();
Copier après la connexion
  1. Définir la politique d'autorisation (facultatif) : en option, vous pouvez définir une stratégie d'autorisation pour restreindre l'accès aux contrôleurs et aux actions en fonction des jetons du porteur.
services.AddAuthorization(auth =>
{
    auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()
        .AddAuthenticationTypes(JwtBearerDefaults.AuthenticationType)
        .RequireAuthenticatedUser().Build());
});
Copier après la connexion
  1. Construire le JWT : Créez une classe JwtSignInHandler pour la génération de jetons.
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);
    }
}
Copier après la connexion
  1. Implémentez la génération de jetons dans le contrôleur : dans une action de contrôleur, utilisez JwtSignInHandler pour générer un jeton.
[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);
}
Copier après la connexion
  1. Jwt Test : Acquérir un token et valider sa signature à l'aide du secret de votre fichier de configuration.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal