| 속성 | 값 |
|---|---|
| 규칙 ID | CA5405 |
| 제목 | 항상 대리자에서 토큰 유효성 검사를 건너뛰지 마세요. |
| 범주 | 보안 |
| 수정 사항이 호환성을 깨뜨리는지 여부 또는 무중단인지 여부 | 주요 변경 아님 |
| .NET 10에서 기본적으로 사용하도록 설정 | 아니요 |
| 적용 가능한 언어 | C# 및 Visual Basic |
원인
AudienceValidator 또는 LifetimeValidator에 할당된 콜백은 항상 true을 반환합니다.
규칙 설명
중요한 TokenValidationParameter 검증 대리자를 항상 true를 반환하도록 설정하면 중요한 인증 보호 기능이 비활성화됩니다. 보호를 사용하지 않도록 설정하면 특정 발급자의 유효성 검사가 잘못되거나 토큰이 만료될 수 있습니다.
토큰 유효성 검사 모범 사례에 관한 자세한 내용은 라이브러리의 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;
};
}
}
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET