| 속성 | 값 |
|---|---|
| 규칙 ID | CA5405 |
| 제목 | 항상 대리자에서 토큰 유효성 검사를 건너뛰지 마세요. |
| 범주 | 보안 |
| 수정 사항이 주요 변경인지 여부 | 주요 변경 아님 |
| .NET 10에서 기본적으로 사용하도록 설정 | 아니요 |
원인
할당되거나 항상 반환AudienceValidator된 LifetimeValidatortrue 콜백입니다.
규칙 설명
항상 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