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
Linda HamiltonOriginal
2024-12-30 14:23:13413Durchsuche

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";
  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;
    });
  1. Authentifizierungs-Middleware aktivieren: Fügen Sie der Anfrage die UseAuthentication-Middleware hinzu Pipeline vor jeglicher Middleware, die Benutzerinformationen erfordert.
app.UseAuthentication();
  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());
});
  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);
    }
}
  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);
}
  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!

Stellungnahme:
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