Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh mengkonfigurasi ASP.NET Core untuk menyokong berbilang pengeluar token JWT (cth., Firebase dan pengeluar tersuai)?
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:
AddAuthentication()
dipanggil tanpa parameter. Ini menghalang pengesahan automatik dengan satu skim, membenarkan semua skim yang ditentukan mencuba pengesahan.AddJwtBearer
digunakan dengan nama skim ("Firebase", "Custom") untuk mendaftarkan setiap pengeluar secara berasingan.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!