-
[ASP.NET Core] "No authenticationScheme was specified" 401 오류 원인과 해결Microsoft .NET/ASP.Net & ASP.Net Core 2026. 11. 10. 00:30

컨트롤러에
[Authorize]가 걸려 있는데 인증 스킴이 등록되지 않았을 때 나는 오류입니다. JWT를 붙이다가 가장 자주 만나는 메시지입니다.절차
- 에러 메시지 확인
- 원인: 인증 스킴 등록 누락
- AddAuthentication에 기본 스킴 지정
- 미들웨어 순서 확인
1. 에러 메시지
System.InvalidOperationException: No authenticationScheme was specified, and there was no DefaultChallengeScheme found. The default schemes can be set using either AddAuthentication(string defaultScheme) or AddAuthentication(Action<AuthenticationOptions> configureOptions).401이 아니라 500으로 터지는 경우가 많습니다. 인증 미들웨어가 응답 코드를 만들지 못하고 예외로 올라가기 때문입니다.
2. 원인: 인증 스킴이 등록되지 않음
[Authorize]는 인증된 사용자만 통과시키는데, 인증되지 않은 요청을 어떤 스킴으로 되돌려 보낼지가 정해져 있지 않으면 예외가 납니다.// 문제가 되는 코드 builder.Services.AddAuthorization(); // 인증 스킴 등록 없음 var app = builder.Build(); app.UseAuthorization();3. 해결 1: 기본 스킴 지정
JWT라면 아래 세 줄이 최소 구성입니다.
builder.Services .AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateLifetime = true, ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey( Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"])) }; });4. 해결 2: 미들웨어 순서
app.UseRouting(); app.UseAuthentication(); // UseAuthorization보다 앞 app.UseAuthorization();5. 스킴이 여러 개일 때
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] public class OrdersController : ControllerBase { }정리
- 예외는 코드가 아니라 등록 누락 신호
- 기본 스킴은
AddAuthentication(스킴명)으로 지정 - 미들웨어 순서와 토큰 파라미터를 함께 확인
'Microsoft .NET > ASP.Net & ASP.Net Core' 카테고리의 다른 글
[.NET] BackgroundService로 주기 작업 만들기, 종료 처리까지 (0) 2026.11.10 [ASP.NET Core] JWT 토큰 발급·검증 최소 구현 (.NET 8) (0) 2026.11.10 [ASP.NET Core] Kestrel "Failed to bind to address" 오류, 포트 점유 해결 (0) 2026.11.10 [ASP.NET Core] "Cannot consume scoped service from singleton" 오류 해결 (0) 2026.11.10 [ASP.Net Core] (작성중) 리눅스(centOS) Docker 에 ASP.Net Core 배포 (0) 2021.08.18