Estoy desarrollando una API web con .Net core 3.0 y quiero integrarla con SwashBuckle.Swagger. Está funcionando bien, pero cuando agrego autenticación JWT, no funciona como esperaba. Para hacer eso, agregué el siguiente código:
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
});
});
Después de agregar AddSecurityDefinition
función, puedo ver el botón Autorizar y cuando hago clic en él, veo el siguiente formulario:
Luego escribo Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh
, después de hacerlo, espero ver authorization: Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh
en el encabezado de la solicitud, cuando envío una solicitud a la API web de Swagger. Pero la autorización no se agrega al encabezado de la solicitud. Estoy usando SwashBuckle.Swagger (5.0.0-rc3). Tenga en cuenta que hay muchas muestras que funcionan bien en .net core 2.0, pero las funciones Swagbuckle swagger han cambiado en la última versión, por lo que no puedo usar esas muestras.
.AddSecurityRequirement
(globalmente) o .Security
(en el nivel de operación), como se explica en las respuestas a la pregunta vinculada. AddSecurityDefinition
solo no es suficiente.