.Net core 3.0으로 Web Api를 개발 중이며 SwashBuckle.Swagger와 통합하려고합니다. 잘 작동하지만 JWT 인증을 추가하면 예상대로 작동하지 않습니다. 이를 위해 아래 코드를 추가했습니다.
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo { Title = "My Web API", Version = "v1" });
c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey
});
});
AddSecurityDefinition
기능을 추가 한 후 인증 버튼을 볼 수 있으며 클릭하면 아래 양식이 표시됩니다.
그런 다음 Swagger에서 Web Api에 요청을 보낼 때 요청 헤더에 표시 될 Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh
것으로 예상합니다 authorization: Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh
. 그러나 권한은 요청 헤더에 추가되지 않습니다. SwashBuckle.Swagger (5.0.0-rc3)를 사용하고 있습니다. .net core 2.0에서 잘 작동하는 샘플이 많이 있지만 Swashbuckle swagger 기능이 최신 버전에서 변경되어 해당 샘플을 사용할 수 없습니다.
.AddSecurityRequirement
(전역 적으로) 또는 .Security
(작업 수준에서 ) 추가하는 것입니다 . AddSecurityDefinition
혼자서는 충분하지 않습니다.