ホームページ > バックエンド開発 > C++ > ASP.NET Core で複数の JWT 発行者を処理する方法?

ASP.NET Core で複数の JWT 発行者を処理する方法?

DDD
リリース: 2025-01-12 06:55:43
オリジナル
1061 人が閲覧しました

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

ASP.NET Core 2 での複数の JWT 発行者の処理

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>
ログイン後にコピー

このコードは、いくつかの重要な点で元のコード スニペットと異なります。

  1. 認証スキームのオーバーロード: AddJwtBearer メソッドには複数のオーバーロードがあり、そのうちの 1 つで認証スキーム名を指定できます。複数のシナリオがあるため、このオーバーロードを使用する必要があります。
  2. デフォルトの認証スキームなし: デフォルトの認証スキームの設定を避けるために、AddAuthentication メソッドがパラメーターなしで使用されます。これは、複数の認証スキームを処理するには、各リクエストがすべてのスキームを通過する必要があるためです。
  3. ポリシーの更新: DefaultPolicy は、「Firebase」および「カスタム」認証スキームを許可するように変更されました。これにより、認可システムは両方のスキームを使用してリクエストの認証を試みることが保証されます。
  4. 認証処理: 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート