Je développe une API Web avec .Net core 3.0 et je souhaite l'intégrer à SwashBuckle.Swagger. Cela fonctionne bien, mais lorsque j'ajoute l'authentification JWT, cela ne fonctionne pas comme prévu. Pour ce faire, j'ai ajouté le code ci-dessous:
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
});
});
Après avoir ajouté une AddSecurityDefinition
fonction, je peux voir le bouton Autoriser et quand je clique dessus, je vois le formulaire ci-dessous:
Ensuite, je tape Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh
, Après l'avoir fait, je m'attends à voir authorization: Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh
dans l'en-tête de la demande, lorsque j'envoie une demande à l'API Web de Swagger. Mais l'autorisation n'est pas ajoutée à l'en-tête de la demande. J'utilise SwashBuckle.Swagger (5.0.0-rc3). Veuillez noter qu'il existe de nombreux exemples qui fonctionnent correctement sur .net core 2.0, mais les fonctions de swagger Swashbuckle ont changé sur la dernière version, donc je ne peux pas utiliser ces exemples.
.AddSecurityRequirement
(globalement) ou .Security
(au niveau de l'opération) - comme expliqué dans les réponses à la question liée. AddSecurityDefinition
seul ne suffit pas.