Rumah > pembangunan bahagian belakang > C++ > Bagaimana Mengendalikan Berbilang Pengeluar JWT dalam Teras ASP.NET?

Bagaimana Mengendalikan Berbilang Pengeluar JWT dalam Teras ASP.NET?

DDD
Lepaskan: 2025-01-12 06:55:43
asal
1010 orang telah melayarinya

How to Handle Multiple JWT Issuers in ASP.NET Core?

Mengendalikan berbilang pengeluar JWT dalam ASP.NET Core 2

ASP.NET Core 2 menyokong pengendalian berbilang penyedia token JWT. Fungsi ini penting apabila API anda perlu disepadukan dengan perkhidmatan luaran yang menggunakan mekanisme pengeluaran token JWT yang berbeza.

Untuk mencapai fungsi ini, sila gunakan kod berikut:

<code class="language-csharp">services
    .AddAuthentication()
    .AddJwtBearer("Firebase", options =>
    {
        options.Authority = "https://securetoken.google.com/my-firebase-project";
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidIssuer = "my-firebase-project",
            ValidateAudience = true,
            ValidAudience = "my-firebase-project",
            ValidateLifetime = true
        };
    })
    .AddJwtBearer("Custom", options =>
    {
        // 在此处配置自定义 JWT 令牌选项
    });

services
    .AddAuthorization(options =>
    {
        options.DefaultPolicy = new AuthorizationPolicyBuilder()
            .RequireAuthenticatedUser()
            .AddAuthenticationSchemes("Firebase", "Custom")
            .Build();
    });</code>
Salin selepas log masuk

Kod ini berbeza daripada coretan kod asal dalam beberapa cara utama:

  1. Lebihan skim pengesahan: Kaedah AddJwtBearer mempunyai berbilang lebihan, salah satunya membenarkan penetapan nama skim pengesahan. Memandangkan kita mempunyai berbilang senario, beban berlebihan ini mesti digunakan.
  2. Tiada skim pengesahan lalai: Kaedah AddAuthentication digunakan tanpa parameter untuk mengelak daripada menetapkan skema pengesahan lalai. Ini kerana pengendalian berbilang skim pengesahan memerlukan setiap permintaan untuk melalui semua skim.
  3. Kemas Kini Dasar: DefaultPolicy telah diubah suai untuk membenarkan skim pengesahan "Firebase" dan "Tersuai". Ini memastikan bahawa sistem kebenaran cuba untuk mengesahkan permintaan menggunakan kedua-dua skim.
  4. Pengendalian Pengesahan: Jika anda mengendalikan acara AuthenticationFailed, sila ambil perhatian bahawa untuk dasar AddJwtBearer bukan pertama, ralat "IDX10501: Pengesahan tandatangan gagal" mungkin berlaku. Ini kerana sistem cuba memadankan tandatangan setiap polisi secara bergilir-gilir.

Nota Tambahan untuk .NET Core 6 dan ke atas

Dalam .NET Core 6 dan ke atas, skim kebenaran lalai mesti dinyatakan. Jadi gunakan kod berikut sebagai ganti:

<code class="language-csharp">builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        {
            // Firebase 配置
        })
        .AddJwtBearer("AzureAD", options =>
        {
            // Azure AD 配置
        });

builder.Services.AddAuthorization(options =>
{
    var defaultAuthorizationPolicyBuilder = new AuthorizationPolicyBuilder(
        JwtBearerDefaults.AuthenticationScheme,
        "AzureAD");
    defaultAuthorizationPolicyBuilder =
        defaultAuthorizationPolicyBuilder.RequireAuthenticatedUser();
    options.DefaultPolicy = defaultAuthorizationPolicyBuilder.Build();
});</code>
Salin selepas log masuk

Dengan melaksanakan penyelesaian yang disediakan, anda boleh menguruskan berbilang pengeluar token JWT dengan lancar dalam aplikasi ASP.NET Core 2 anda.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Berbilang Pengeluar JWT dalam Teras ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan