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>
Kod ini berbeza daripada coretan kod asal dalam beberapa cara utama:
AddJwtBearer
mempunyai berbilang lebihan, salah satunya membenarkan penetapan nama skim pengesahan. Memandangkan kita mempunyai berbilang senario, beban berlebihan ini mesti digunakan. AddAuthentication
digunakan tanpa parameter untuk mengelak daripada menetapkan skema pengesahan lalai. Ini kerana pengendalian berbilang skim pengesahan memerlukan setiap permintaan untuk melalui semua skim. DefaultPolicy
telah diubah suai untuk membenarkan skim pengesahan "Firebase" dan "Tersuai". Ini memastikan bahawa sistem kebenaran cuba untuk mengesahkan permintaan menggunakan kedua-dua skim. 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>
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!