Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengkonfigurasi Pengesahan Berasaskan Token dalam API Web Teras ASP.NET untuk Aplikasi AngularJS?

Bagaimana untuk Mengkonfigurasi Pengesahan Berasaskan Token dalam API Web Teras ASP.NET untuk Aplikasi AngularJS?

Linda Hamilton
Linda Hamiltonasal
2024-12-30 14:23:13413semak imbas

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

Mengkonfigurasi Pengesahan Berasaskan Token dalam WebApi Teras ASP.NET

Cabaran

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.

Persediaan Pengesahan

Untuk mengkonfigurasi pengesahan berasaskan token dalam ASP.NET Core WebApi, ikuti ini langkah:

  1. Tentukan Sifat Token: Mulakan dengan mencipta pemalar untuk parameter token, termasuk penonton dan pengeluar token.
const string TokenAudience = "Myself";
const string TokenIssuer = "MyProject";
  1. Konfigurasikan DI Perkhidmatan:

    • Dalam kaedah Startup.cs ConfigureServices anda, tambah suntikan kebergantungan untuk kelas JwtSignInHandler.
    • Konfigurasikan pengesahan kepada lalai kepada JWT dan tetapkan pengesahan token parameter.
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. Dayakan Perisian Tengah Pengesahan: Tambahkan perisian tengah UseAuthentication dalam saluran permintaan sebelum sebarang perisian tengah yang memerlukan maklumat pengguna.
app.UseAuthentication();
  1. Takrifkan Dasar Kebenaran (Pilihan): Secara pilihan, anda boleh mentakrifkan Polisi Kebenaran untuk menyekat akses kepada pengawal dan tindakan berdasarkan token pembawa.
services.AddAuthorization(auth =>
{
    auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()
        .AddAuthenticationTypes(JwtBearerDefaults.AuthenticationType)
        .RequireAuthenticatedUser().Build());
});
  1. Bina JWT: Buat kelas JwtSignInHandler untuk token generasi.
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. Laksanakan Penjanaan Token dalam Pengawal: Dalam tindakan pengawal, gunakan JwtSignInHandler untuk menjana 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. Ujian Jwt: Perolehi token dan sahkan tandatangannya menggunakan rahsia daripada fail konfigurasi anda.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn