c# - studio - swashbuckle swagger
ConfiguraciĆ³n de Swagger(ASP.NET Core) utilizando los encabezados de autorizaciĆ³n(portador) (2)
Tengo una API web (ASP.NET Core) y estoy tratando de ajustar la arrogancia para hacer las llamadas desde ella. Las llamadas deben contener el encabezado de autorización y estoy usando la autenticación de portador. Las llamadas de aplicaciones de terceros como Postman, etc. van bien. Pero tengo el problema con la configuración de los encabezados para swagger (por alguna razón no recibo los encabezados). Así es como se ve ahora:
"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
}
},
Actualmente, Swagger tiene funcionalidad para la autenticación con token JWT y puede agregar automáticamente token en el encabezado, he respondido here .
En primer lugar, puede usar Swashbuckle.AspNetCore
nuget package para generar automáticamente su definición de Swagger. (probado en 2.3.0)
Una vez que haya instalado el paquete, configúrelo en Startup.cs en el método 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>() },
});
});
Luego puede usar el botón Autorizar en la parte superior derecha de la página.
Al menos puedes intentar usar este paquete para generar una definición de swagger válida