Ich entwickle einige Web-APIs mit .Net Core 3.0 und möchte sie in SwashBuckle.Swagger integrieren. Es funktioniert einwandfrei, aber wenn ich die JWT-Authentifizierung hinzufüge, funktioniert es nicht wie erwartet. Dazu habe ich den folgenden Code hinzugefügt:
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
});
});
Nach dem Hinzufügen der AddSecurityDefinition
Funktion wird die Schaltfläche "Autorisieren" angezeigt. Wenn ich darauf klicke, wird das folgende Formular angezeigt:
Dann tippe ich Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh
: Nachdem ich es getan habe, erwarte ich, dass es authorization: Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh
im Header der Anfrage angezeigt wird, wenn ich eine Anfrage von Swagger an die Web-API sende. Die Berechtigung wird jedoch nicht zum Anforderungsheader hinzugefügt. Ich benutze SwashBuckle.Swagger (5.0.0-rc3). Bitte beachten Sie, dass es viele Beispiele gibt, die unter .net Core 2.0 einwandfrei funktionieren, aber die Swashbuckle-Swagger-Funktionen wurden in der neuesten Version geändert, sodass ich diese Beispiele nicht verwenden kann.
.AddSecurityRequirement
(global) oder .Security
(auf Operationsebene) hinzuzufügen - wie in den Antworten auf die verknüpfte Frage erläutert. AddSecurityDefinition
allein reicht nicht aus.