Maison > développement back-end > C++ > Comment implémenter l'authentification basée sur les jetons dans ASP.NET Core pour une application AngularJS ?

Comment implémenter l'authentification basée sur les jetons dans ASP.NET Core pour une application AngularJS ?

DDD
Libérer: 2024-12-27 18:53:12
original
215 Les gens l'ont consulté

How to Implement Token-Based Authentication in ASP.NET Core for an AngularJS Application?

Authentification basée sur des jetons dans ASP.NET Core


Scénario

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.

Comment configurer l'authentification basée sur les jetons dans ASP.NET Core

Pour configurer votre application API Web ASP.NET Core pour les applications basées sur des jetons authentification :

1. Définir des constantes

Créer des constantes pour l'audience du jeton et l'émetteur :

const string TokenAudience = "Myself";
const string TokenIssuer = "MyProject";
Copier après la connexion

2. Configure Services

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;
    });
Copier après la connexion

3. Configurer l'authentification

Ajoutez la ligne suivante dans votre fichier Startup.cs, avant tout middleware nécessitant des informations utilisateur :

app.UseAuthentication();
Copier après la connexion

4. Construisez le jeton

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);
    }
}
Copier après la connexion

5. Renvoyez le jeton

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);
}
Copier après la connexion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal