Zajmuję się tworzeniem interfejsu API sieci Web z .Net core 3.0 i chcę zintegrować go z SwashBuckle.Swagger. Działa dobrze, ale po dodaniu uwierzytelnienia JWT nie działa zgodnie z oczekiwaniami. Aby to zrobić, dodałem poniższy kod:
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
});
});
Po dodaniu AddSecurityDefinition
funkcji widzę przycisk Autoryzuj, a kiedy go klikam, widzę poniższy formularz:
Następnie piszę: Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh
Po zrobieniu tego spodziewam się zobaczyć authorization: Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh
w nagłówku żądania, kiedy wysyłam żądanie do interfejsu API sieci Web od Swagger. Ale autoryzacja nie jest dodawana do nagłówka żądania. Używam SwashBuckle.Swagger (5.0.0-rc3). Należy pamiętać, że istnieje wiele próbek, które działają dobrze na .net core 2.0, ale funkcje swashger Swashbuckle zmieniły się w najnowszej wersji, więc nie mogę używać tych próbek.
.AddSecurityRequirement
(globalnie) lub .Security
(na poziomie operacyjnym) - jak wyjaśniono w odpowiedziach na powiązane pytanie. AddSecurityDefinition
sam nie wystarczy.