J'ai une API Web (ASP.NET Core) et j'essaie d'ajuster le swagger pour passer les appels de celui-ci . Les appels doivent contenir l'en-tête Authorization et j'utilise l'authentification du porteur . Les appels du troisième les applications pour fêtes, telles que Postman, etc. vont bien ... Mais je ne parviens pas à configurer les en-têtes pour Swagger (pour une raison quelconque, je ne reçois pas les en-têtes). Voici à quoi cela ressemble maintenant:
"Host": "localhost:50352",
"basePath": "/" ,
"schemes": [
"http",
"https"
],
"securityDefinitions": {
"Bearer": {
"name": "Authorization",
"in": "header",
"type": "apiKey",
"description": "HTTP/HTTPS Bearer"
}
},
"paths": {
"/v1/{subAccountId}/test1": {
"post": {
"tags": [
"auth"
],
"operationId": "op1",
"consumes": ["application/json", "application/html"],
"produces": ["application/json", "application/html"],
"parameters": [
{
"name": "subAccountId",
"in": "path",
"required": true,
"type": "string"
}
],
"security":[{
"Bearer": []
}],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "BadRequest",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "InternalServerError",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"deprecated": false
}
},
Tout d’abord, vous pouvez utiliser le package Swashbuckle.AspNetCore
nuget pour générer automatiquement votre définition de swagger. (testé sur 2.3.0)
Après avoir installé le paquet, configurez-le dans Startup.cs dans la méthode ConfigureServices
services.AddSwaggerGen(c => {
c.SwaggerDoc("v1", new Info { Title = "You api title", Version = "v1" });
c.AddSecurityDefinition("Bearer", new ApiKeyScheme { In = "header", Description = "Please enter JWT with Bearer into field", Name = "Authorization", Type = "apiKey" });
c.AddSecurityRequirement(new Dictionary<string, IEnumerable<string>> {
{ "Bearer", Enumerable.Empty<string>() },
});
});
Ensuite, vous pouvez utiliser le bouton Autoriser en haut à droite de la page.
Au moins, vous pouvez essayer d’utiliser ce paquet pour générer une définition swagger valide
Actuellement, Swagger dispose d'une fonctionnalité d'authentification avec JWT-token et peut automatiquement ajouter un token dans l'en-tête. J'ai répondu ici .