다음을 통해 공유


CA5405: 항상 대리자에서 토큰 유효성 검사를 건너뛰지 않음

속성
규칙 ID CA5405
타이틀 항상 대리자에서 토큰 유효성 검사를 건너뛰지 마세요.
범주 보안
수정 사항이 주요 변경인지 여부 주요 변경 아님
.NET 8에서 기본적으로 사용 아니요

원인

할당되거나 항상 반환trueAudienceValidator LifetimeValidator 콜백입니다.

규칙 설명

항상 true를 반환하도록 중요한 TokenValidationParameter 유효성 검사 대리자를 설정하면 중요한 인증 보호가 사용되지 않습니다. 보호를 사용하지 않도록 설정하면 특정 발급자의 유효성 검사가 잘못되거나 토큰이 만료될 수 있습니다.

토큰 유효성 검사 모범 사례에 관한 자세한 내용은 라이브러리의 Wiki를 참조하세요.

위반 문제를 해결하는 방법

  • 대리자의 논리를 개선하여 일부 코드 경로가 true를 반환하지 않으면 해당 유형의 유효성 검사가 효과적으로 사용하지 않도록 설정됩니다.
  • 유효성 검사를 실패하게 하려는 실패 사례에서 SecurityTokenInvalidAudienceException 또는 SecurityTokenInvalidLifetimeException를 throw하고 true를 반환하여 다른 사례는 통과하게 합니다.

경고를 표시하지 않는 경우

추가 로깅에 대리자를 사용하고 특정 유형의 유효성 검사가 필요하지 않은 토큰 형식에 해당하는 일부 특정 사례에서는 이 경고를 표시하지 않는 것이 좋을 수 있습니다. 이 유효성 검사를 사용하지 않도록 설정하기 전에 보안에 미치는 영향을 완전히 파악해야 합니다. 장단점에 관한 내용은 토큰 유효성 검사 라이브러리의 Wiki를 참조하세요.

경고 표시 안 함

단일 위반만 표시하지 않으려면 원본 파일에 전처리기 지시문을 추가하여 규칙을 사용하지 않도록 설정한 후 다시 사용하도록 설정합니다.

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

파일, 폴더 또는 프로젝트에 대한 규칙을 사용하지 않도록 설정하려면 구성 파일에서 심각도를 none으로 설정합니다.

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

자세한 내용은 방법: 코드 분석 경고 표시 안 함을 참조하세요.

의사 코드 예제

위반

using System;
using Microsoft.IdentityModel.Tokens;

class TestClass
{
    public void TestMethod()
    {
        TokenValidationParameters parameters = new TokenValidationParameters();
        parameters.AudienceValidator = (audiences, token, tvp) => { return true; };
    }
}

해결 방법

using System;
using Microsoft.IdentityModel.Tokens;

class TestClass
{
    public void TestMethod()
    {
        TokenValidationParameters parameters = new TokenValidationParameters();
        parameters.AudienceValidator = (audiences, token, tvp) =>
        {
            // Implement your own custom audience validation
            if (PerformCustomAudienceValidation(audiences, token))
                return true;
            else
                return false;
        };
    }
}