ホームページ > バックエンド開発 > C++ > 複数の JWT トークン発行者 (Firebase やカスタム発行者など) をサポートするように ASP.NET Core を構成するにはどうすればよいですか?

複数の JWT トークン発行者 (Firebase やカスタム発行者など) をサポートするように ASP.NET Core を構成するにはどうすればよいですか?

DDD
リリース: 2025-01-12 06:24:47
オリジナル
404 人が閲覧しました

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

ASP.NET Core での複数の JWT トークン発行者のサポート

このガイドでは、Firebase やカスタム発行者などの複数のソースからの JWT を認証するように ASP.NET Core を構成する方法について説明します。 標準の AddJwtBearer メソッドは単一の機関のみをサポートするため、これが共通の課題となります。

解決策: 複数の認証スキーム

重要なのは、ASP.NET Core 内で複数の認証スキームを利用することです。 これにより、アプリケーションはさまざまな発行者からの JWT を個別に処理できるようになります。

実装 (ASP.NET Core 2 以降):

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

主な改善点:

  • デフォルトの認証スキームなし: AddAuthentication() はパラメータなしで呼び出されます。これにより、単一スキームによる自動認証が防止され、定義されたすべてのスキームが認証を試行できるようになります。
  • 名前付き認証スキーム: AddJwtBearer は、各発行者を個別に登録するためにスキーム名 (「Firebase」、「Custom」) とともに使用されます。
  • 結合認可: デフォルトの認可ポリシーは、「Firebase」スキームと「カスタム」スキームの両方を使用するように構成されています。 これにより、両方の発行者に対して認証が試行されることが保証されます。

エラーの処理:

認証の失敗中に IDX10501 エラーが発生する可能性があります。これは多くの場合、認証ミドルウェアが各スキームを順番にチェックすることが原因です。 多くの場合、このエラーは無視しても問題ありません。

ASP.NET Core 6 以降:

新しいバージョンでは、デフォルトの認証スキームが必要です。 適応された例は次のとおりです:

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

"my-firebase-project""your-custom-issuer""your-secret-key""your-api-audience""your-identity-server-url""your-azure-ad-authority" などのプレースホルダーを実際の値に置き換えてください。 運用環境では、より堅牢なキー管理の使用を検討してください。 ポリシーベースの認可により、複雑なシナリオに対してよりきめ細かい制御が可能になります。

以上が複数の JWT トークン発行者 (Firebase やカスタム発行者など) をサポートするように ASP.NET Core を構成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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