In ASP.NET Core 2 Web API
, mit Swashbuckle.AspNetCore Paket 2.1.0, implementieren eine IDocumentFilter:
SwaggerSecurityRequirementsDocumentFilter.cs
using System.Collections.Generic;
using Swashbuckle.AspNetCore.Swagger;
using Swashbuckle.AspNetCore.SwaggerGen;
namespace api.infrastructure.filters
{
public class SwaggerSecurityRequirementsDocumentFilter : IDocumentFilter
{
public void Apply(SwaggerDocument document, DocumentFilterContext context)
{
document.Security = new List<IDictionary<string, IEnumerable<string>>>()
{
new Dictionary<string, IEnumerable<string>>()
{
{ "Bearer", new string[]{ } },
{ "Basic", new string[]{ } },
}
};
}
}
}
Konfigurieren Sie in Startup.cs eine Sicherheitsdefinition und registrieren Sie den benutzerdefinierten Filter:
public void ConfigureServices(IServiceCollection services)
{
services.AddSwaggerGen(c =>
{
c.AddSecurityDefinition("Bearer", new ApiKeyScheme()
{
Description = "Authorization header using the Bearer scheme",
Name = "Authorization",
In = "header"
});
c.DocumentFilter<SwaggerSecurityRequirementsDocumentFilter>();
});
}
Klicken Sie in der Swagger-Benutzeroberfläche auf die Schaltfläche Autorisieren und legen Sie den Wert für das Token fest.
Ergebnis:
curl -X GET "http://localhost:5000/api/tenants" -H "accept: text/plain" -H "Authorization: Bearer ABCD123456"
RequestParse
dann auch Eingabefelder in die Swagger-Dokumentation einfüge. Wie und wo soll diese Textdatei `- name: auth` hinzufügen?