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
Lepaskan: 2024-12-30 14:23:13
asal
464 orang telah melayarinya

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";
Salin selepas log masuk
  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;
    });
Salin selepas log masuk
  1. Dayakan Perisian Tengah Pengesahan: Tambahkan perisian tengah UseAuthentication dalam saluran permintaan sebelum sebarang perisian tengah yang memerlukan maklumat pengguna.
app.UseAuthentication();
Salin selepas log masuk
  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());
});
Salin selepas log masuk
  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);
    }
}
Salin selepas log masuk
  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);
}
Salin selepas log masuk
  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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan