CA5404: トークンの検証チェックを無効にしない

プロパティ
ルール ID CA5404
Title トークンの検証チェックを無効にしない
[カテゴリ] Security
修正が中断か中断なしであるか なし
.NET 8 では既定で有効 いいえ

原因

TokenValidationParameters のプロパティ RequireExpirationTimeValidateAudienceValidateIssuer、または ValidateLifetimefalse に設定されています。

規則の説明

トークンの検証チェックでは、トークンの検証中にすべての側面が分析され、検証されます。 検証を無効にすると、信頼されていないトークンが検証を通過してしまい、セキュリティ ホールが生じる可能性があります。

トークン検証のベスト プラクティスの詳細については、ライブラリの Wiki を参照してください。

違反の修正方法

TokenValidationParameters のプロパティ RequireExpirationTimeValidateAudienceValidateIssuer、または ValidateLifetimetrue に設定します。 または、既定値が true であるため、false への割り当てを削除します。

どのようなときに警告を抑制するか

ほとんどの場合、消費側アプリのセキュリティの確保に、この検証は不可欠です。 ただし、特に標準ではないトークンの種類でこの検証は不要な場合があります。 この検証を無効にする前に、必ずセキュリティへの影響を十分に検討してください。 トレードオフの詳細については、トークン検証ライブラリの Wikiを参照してください。

警告を抑制する

単一の違反を抑制するだけの場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則をもう一度有効にします。

#pragma warning disable CA5404
// The code that's violating the rule is on this line.
#pragma warning restore CA5404

ファイル、フォルダー、またはプロジェクトの規則を無効にするには、構成ファイルでその重要度を none に設定します。

[*.{cs,vb}]
dotnet_diagnostic.CA5404.severity = none

詳細については、「コード分析の警告を抑制する方法」を参照してください。

疑似コードの例

using System;
using Microsoft.IdentityModel.Tokens;

class TestClass
{
    public void TestMethod()
    {
        TokenValidationParameters parameters = new TokenValidationParameters();
        parameters.RequireExpirationTime = false;
        parameters.ValidateAudience = false;
        parameters.ValidateIssuer = false;
        parameters.ValidateLifetime = false;
    }
}

解決策

using System;
using Microsoft.IdentityModel.Tokens;

class TestClass
{
    public void TestMethod()
    {
        TokenValidationParameters parameters = new TokenValidationParameters();
        parameters.RequireExpirationTime = true;
        parameters.ValidateAudience = true;
        parameters.ValidateIssuer = true;
        parameters.ValidateLifetime = true;
    }
}