.NET 5에서 Swagger를 통한 JWT 인증 활성화

  1. Startup.cs 파일 수정

수정이 필요한 주요 부분은 서비스 구성 및 미들웨어 파이프라인 설정입니다.

  1. 미들웨어 순서 확인
app.UseAuthentication();
app.UseAuthorization();

이 두 줄의 순서는 매우 중요합니다. 인증 처리는 반드시 권한 검사보다 먼저 이루어져야 합니다. 즉, 사용자 신원을 먼저 확인한 후, 그 사용자가 접근할 수 있는 리소스를 판단해야 하므로, 인증 후 권한 검사 순서가 맞아야 합니다.

  1. Swagger 설정: JWT 인증 지원 추가

다음과 같이 AddSwaggerGen 내부에 인증 관련 설정을 포함합니다:

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo { Title = "MyAPI", Version = "v1" });

    // XML 주석 파일 경로 설정
    var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
    var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
    c.IncludeXmlComments(xmlPath);

    #region JWT 인증 설정
    // 응답 헤더 추가 필터
    c.OperationFilter<AddResponseHeadersFilter>();
    // 요약에 인증 정보 표시
    c.OperationFilter<AppendAuthorizeToSummaryOperationFilter>();

    // 요청 헤더에 토큰 전달 가능하도록 설정
    c.OperationFilter<SecurityRequirementsOperationFilter>();

    // OAuth2 보안 정의 (JWT)
    c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
    {
        Description = "JWT 형식으로 인증을 수행합니다. 요청 헤더에 'Bearer {token}' 형태로 입력하세요. (공백 주의)",
        Name = "Authorization",
        In = ParameterLocation.Header,
        Type = SecuritySchemeType.ApiKey,
        Scheme = "Bearer"
    });
    #endregion
});
  1. JWT 인증 서비스 등록
services.AddAuthentication(options =>
{
    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
    options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
    options.SaveToken = true;
    options.RequireHttpsMetadata = false;

    options.TokenValidationParameters = new TokenValidationParameters
    {
        ValidateIssuer = true,
        ValidateAudience = true,
        ValidAudience = "https://example.com/api",
        ValidIssuer = "https://example.com/api",
        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("StrongSecretKeyForJWTSigning1234567890"))
    };
});
  1. 동작 효과

Swagger UI에서 각 API 엔드포인트를 확인하면, "Authorize" 버튼이 나타나며, 클릭 시 토큰 입력 창이 열립니다. 이곳에 Bearer <your_token> 형식으로 토큰을 입력하면, 이후 요청이 인증된 상태로 전송됩니다.

태그: ASP.NET Core jwt swagger authentication authorization

6월 20일 22:19에 게시됨