Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh mengkonfigurasi ASP.NET Core untuk menyokong berbilang pengeluar token JWT (cth., Firebase dan pengeluar tersuai)?

Bagaimanakah saya boleh mengkonfigurasi ASP.NET Core untuk menyokong berbilang pengeluar token JWT (cth., Firebase dan pengeluar tersuai)?

DDD
DDDasal
2025-01-12 06:24:47342semak imbas

How can I configure ASP.NET Core to support multiple JWT token issuers (e.g., Firebase and a custom issuer)?

Menyokong Berbilang Pengeluar Token JWT dalam Teras ASP.NET

Panduan ini menerangkan cara mengkonfigurasi Teras ASP.NET untuk mengesahkan JWT daripada berbilang sumber, seperti Firebase dan pengeluar tersuai. Kaedah AddJwtBearer standard hanya menyokong satu pihak berkuasa, menjadikan ini cabaran biasa.

Penyelesaian: Skim Pengesahan Berbilang

Kuncinya ialah menggunakan berbilang skim pengesahan dalam Teras ASP.NET. Ini membolehkan aplikasi mengendalikan JWT daripada pengeluar yang berbeza secara bebas.

Pelaksanaan (ASP.NET Teras 2 dan lebih baru):

<code class="language-csharp">services
    .AddAuthentication() // No default scheme specified
    .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 =>
    {
        // Configure validation parameters for your custom JWT issuer here.
        //  Example:
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidIssuer = "your-custom-issuer",
            ValidateAudience = true,
            ValidAudience = "your-api-audience",
            ValidateLifetime = true,
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your-secret-key")) // Or your key retrieval method
        };
    });

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

Peningkatan Utama:

  • Tiada Skim Pengesahan Lalai: AddAuthentication() dipanggil tanpa parameter. Ini menghalang pengesahan automatik dengan satu skim, membenarkan semua skim yang ditentukan mencuba pengesahan.
  • Skim Pengesahan Dinamakan: AddJwtBearer digunakan dengan nama skim ("Firebase", "Custom") untuk mendaftarkan setiap pengeluar secara berasingan.
  • Keizinan Gabungan: Dasar kebenaran lalai dikonfigurasikan untuk menggunakan kedua-dua skim "Firebase" dan "Tersuai". Ini memastikan bahawa percubaan pengesahan akan dibuat terhadap kedua-dua pengeluar.

Mengendalikan Ralat:

Anda mungkin menghadapi ralat IDX10501 semasa kegagalan pengesahan. Ini selalunya disebabkan oleh perisian tengah pengesahan yang memeriksa setiap skim secara berurutan. Dalam banyak kes, ralat ini boleh diabaikan dengan selamat.

ASP.NET Teras 6 dan Kemudian:

Dalam versi yang lebih baharu, skim pengesahan lalai diperlukan. Berikut ialah contoh yang disesuaikan:

<code class="language-csharp">builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.Audience = "your-api-audience";
        options.Authority = "your-identity-server-url"; // Or your default JWT issuer
    })
    .AddJwtBearer("AzureAD", options =>
    {
        options.Audience = "your-api-audience";
        options.Authority = "your-azure-ad-authority";
    });

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

Ingat untuk menggantikan ruang letak seperti "my-firebase-project", "your-custom-issuer", "your-secret-key", "your-api-audience", "your-identity-server-url" dan "your-azure-ad-authority" dengan nilai sebenar anda. Pertimbangkan untuk menggunakan pengurusan utama yang lebih mantap untuk persekitaran pengeluaran. Keizinan berasaskan dasar boleh memberikan kawalan yang lebih terperinci untuk senario yang rumit.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengkonfigurasi ASP.NET Core untuk menyokong berbilang pengeluar token JWT (cth., Firebase dan pengeluar tersuai)?. 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