Microsoft .NET/ASP.Net & ASP.Net Core
[ASP.NET Core] "No authenticationScheme was specified" 401 오류 원인과 해결
전자기린
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(스킴명)으로 지정 - 미들웨어 순서와 토큰 파라미터를 함께 확인