ASP.NET Core 2 は、複数の JWT トークン プロバイダーの処理をサポートしています。この機能は、API がさまざまな JWT トークン発行メカニズムを使用する外部サービスと統合する必要がある場合に重要です。
この機能を実現するには、次のコードを使用してください:
<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>
このコードは、いくつかの重要な点で元のコード スニペットと異なります。
AddJwtBearer
メソッドには複数のオーバーロードがあり、そのうちの 1 つで認証スキーム名を指定できます。複数のシナリオがあるため、このオーバーロードを使用する必要があります。 AddAuthentication
メソッドがパラメーターなしで使用されます。これは、複数の認証スキームを処理するには、各リクエストがすべてのスキームを通過する必要があるためです。 DefaultPolicy
は、「Firebase」および「カスタム」認証スキームを許可するように変更されました。これにより、認可システムは両方のスキームを使用してリクエストの認証を試みることが保証されます。 AuthenticationFailed
イベントを処理する場合、最初以外の AddJwtBearer
ポリシーでは、エラー「IDX10501: 署名の検証に失敗しました」が発生する可能性があることに注意してください。これは、システムが各ポリシーの署名を順番に照合しようとするためです。 .NET Core 6 以降に関する追加メモ
.NET Core 6 以降では、デフォルトの認証スキームを指定する必要があります。したがって、代わりに次のコードを使用してください:
<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>
提供されたソリューションを実装すると、ASP.NET Core 2 アプリケーションで複数の JWT トークン発行者をシームレスに管理できます。
以上がASP.NET Core で複数の JWT 発行者を処理する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。