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 Ihre ASP.NET Core-Web-API-Anwendung für tokenbasiert Authentifizierung:
Erstellen Sie Konstanten für die Token-Zielgruppe und den Emittenten:
const string TokenAudience = "Myself"; const string TokenIssuer = "MyProject";
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; });
Fügen Sie die folgende Zeile in Ihre Startup.cs-Datei ein, vor jeder Middleware, die Benutzerinformationen erfordert:
app.UseAuthentication();
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); } }
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); }
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!