Microsoft .NET/ASP.Net & ASP.Net Core

[ASP.NET Core] "No authenticationScheme was specified" 401 오류 원인과 해결

전자기린 2026. 11. 10. 00:30

컨트롤러에 [Authorize]가 걸려 있는데 인증 스킴이 등록되지 않았을 때 나는 오류입니다. JWT를 붙이다가 가장 자주 만나는 메시지입니다.

절차

  1. 에러 메시지 확인
  2. 원인: 인증 스킴 등록 누락
  3. AddAuthentication에 기본 스킴 지정
  4. 미들웨어 순서 확인

 

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 { }

정리

  1. 예외는 코드가 아니라 등록 누락 신호
  2. 기본 스킴은 AddAuthentication(스킴명)으로 지정
  3. 미들웨어 순서와 토큰 파라미터를 함께 확인