Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengkonfigurasi Pengesahan Berasaskan Token dalam API Web Teras ASP.NET untuk Aplikasi AngularJS?
Dalam aplikasi Teras ASP.NET, melaksanakan pengesahan berasaskan token boleh satu cabaran. Contoh konvensional biasanya berkisar pada pengesahan kuki atau penyedia pengesahan luaran. Walau bagaimanapun, apabila bekerja dengan senario di mana aplikasi AngularJS meminta token daripada titik akhir /token, menghantar nama pengguna dan kata laluan, adalah penting untuk memahami cara mengkonfigurasi aplikasi WebApi dengan sewajarnya.
Untuk mengkonfigurasi pengesahan berasaskan token dalam ASP.NET Core WebApi, ikuti ini langkah:
const string TokenAudience = "Myself"; const string TokenIssuer = "MyProject";
Konfigurasikan DI Perkhidmatan:
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; });
app.UseAuthentication();
services.AddAuthorization(auth => { auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder() .AddAuthenticationTypes(JwtBearerDefaults.AuthenticationType) .RequireAuthenticatedUser().Build()); });
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); } }
[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); }
Atas ialah kandungan terperinci Bagaimana untuk Mengkonfigurasi Pengesahan Berasaskan Token dalam API Web Teras ASP.NET untuk Aplikasi AngularJS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!