Heim > Backend-Entwicklung > C++ > Wie konfiguriere ich die tokenbasierte Authentifizierung in der ASP.NET Core-Web-API für AngularJS-Anwendungen?

Wie konfiguriere ich die tokenbasierte Authentifizierung in der ASP.NET Core-Web-API für AngularJS-Anwendungen?

Linda Hamilton
Freigeben: 2024-12-30 14:23:13
Original
403 Leute haben es durchsucht

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

Konfigurieren der tokenbasierten Authentifizierung in ASP.NET Core WebApi

Herausforderung

In ASP.NET Core-Anwendungen kann die Implementierung einer tokenbasierten Authentifizierung erfolgen eine Herausforderung. Herkömmliche Beispiele drehen sich typischerweise um die Cookie-Authentifizierung oder externe Authentifizierungsanbieter. Wenn Sie jedoch mit einem Szenario arbeiten, in dem eine AngularJS-Anwendung ein Token von einem /token-Endpunkt anfordert und dabei Benutzernamen und Passwort übergibt, ist es wichtig zu verstehen, wie die WebApi-Anwendung entsprechend konfiguriert wird.

Authentifizierungs-Setup

Um die tokenbasierte Authentifizierung in ASP.NET Core WebApi zu konfigurieren, befolgen Sie diese Schritte Schritte:

  1. Token-Eigenschaften definieren: Beginnen Sie mit der Erstellung von Konstanten für Token-Parameter, einschließlich der Token-Zielgruppe und des Token-Ausstellers.
const string TokenAudience = "Myself";
const string TokenIssuer = "MyProject";
Nach dem Login kopieren
  1. DI-Dienste konfigurieren:

    • In Ihrem Startup.cs-Methode „ConfigureServices“, Abhängigkeitsinjektion für die JwtSignInHandler-Klasse hinzufügen.
    • Konfigurieren Sie die Authentifizierung standardmäßig auf JWT und legen Sie Token-Validierungsparameter fest.
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
  1. Authentifizierungs-Middleware aktivieren: Fügen Sie der Anfrage die UseAuthentication-Middleware hinzu Pipeline vor jeglicher Middleware, die Benutzerinformationen erfordert.
app.UseAuthentication();
Nach dem Login kopieren
  1. Autorisierungsrichtlinie definieren (optional): Optional können Sie eine Autorisierungsrichtlinie definieren, um den Zugriff auf Controller und Aktionen einzuschränken basierend auf Inhabertokens.
services.AddAuthorization(auth =>
{
    auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()
        .AddAuthenticationTypes(JwtBearerDefaults.AuthenticationType)
        .RequireAuthenticatedUser().Build());
});
Nach dem Login kopieren
  1. Erstellen Sie die JWT: Erstellen Sie eine JwtSignInHandler-Klasse für die 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
  1. Implementieren Sie die Token-Generierung im Controller: Verwenden Sie innerhalb einer Controller-Aktion den JwtSignInHandler zum Generieren A Token.
[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
  1. Jwt-Testen: Erwerben Sie ein Token und validieren Sie seine Signatur mithilfe des Geheimnisses aus Ihrer Konfigurationsdatei.

Das obige ist der detaillierte Inhalt vonWie konfiguriere ich die tokenbasierte Authentifizierung in der ASP.NET Core-Web-API für AngularJS-Anwendungen?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage