Heim > Backend-Entwicklung > C++ > Wie implementiert man eine tokenbasierte Authentifizierung in ASP.NET Core für eine AngularJS-Anwendung?

Wie implementiert man eine tokenbasierte Authentifizierung in ASP.NET Core für eine AngularJS-Anwendung?

DDD
Freigeben: 2024-12-27 18:53:12
Original
215 Leute haben es durchsucht

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

Tokenbasierte Authentifizierung in ASP.NET Core


Szenario

Angenommen, Sie haben eine ASP.NET Core-Anwendung, in der Sie eine tokenbasierte Authentifizierung für eine AngularJS-Anwendung implementieren möchten. Die AngularJS-Anwendung stellt eine Anfrage an eine bestimmte URL und übergibt dabei einen Benutzernamen und ein Passwort. Die Web-API autorisiert den Benutzer und gibt ein Zugriffstoken zurück, das die AngularJS-App in nachfolgenden Anforderungen verwendet.

So konfigurieren Sie die tokenbasierte Authentifizierung in ASP.NET Core

So konfigurieren Sie Ihre ASP.NET Core-Web-API-Anwendung für tokenbasiert Authentifizierung:

1. Definieren Sie Konstanten

Erstellen Sie Konstanten für die Token-Zielgruppe und den Emittenten:

const string TokenAudience = "Myself";
const string TokenIssuer = "MyProject";
Nach dem Login kopieren

2. Dienste konfigurieren

Fügen Sie in Ihrer Startup.cs-Datei Folgendes zur Methode „ConfigureServices“ hinzu:

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;
    });
Nach dem Login kopieren

3. Authentifizierung einrichten

Fügen Sie die folgende Zeile in Ihre Startup.cs-Datei ein, vor jeder Middleware, die Benutzerinformationen erfordert:

app.UseAuthentication();
Nach dem Login kopieren

4. Erstellen Sie das Token

Erstellen Sie eine Klasse für die JWT-Token-Generierung:

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);
    }
}
Nach dem Login kopieren

5. Geben Sie das Token zurück

Rufen Sie in der Controller-Aktion, in der Sie das Token zurückgeben möchten, die BuildJwt-Methode auf:

[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);
}
Nach dem Login kopieren

Mit diesen Schritten wird Ihre ASP.NET Core-Web-API Die Anwendung wird für die Verwendung einer tokenbasierten Authentifizierung konfiguriert, sodass Ihre AngularJS-Anwendung sicher auf geschützte Ressourcen zugreifen kann.

Das obige ist der detaillierte Inhalt vonWie implementiert man eine tokenbasierte Authentifizierung in ASP.NET Core für eine AngularJS-Anwendung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage