Sto sviluppando alcune API Web con .Net core 3.0 e voglio integrarlo con SwashBuckle.Swagger. Funziona bene, ma quando aggiungo l'autenticazione JWT, non funziona come mi aspetto. Per fare ciò, ho aggiunto il seguente codice:
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
});
});
Dopo aver aggiunto la AddSecurityDefinition
funzione, posso vedere il pulsante Autorizza e quando faccio clic su di esso, vedo il modulo seguente:
Quindi digito Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh
, dopo averlo fatto mi aspetto di vedere authorization: Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh
nell'intestazione della richiesta, quando invio una richiesta all'API Web da Swagger. Ma l'autorizzazione non viene aggiunta all'intestazione della richiesta. Sto usando SwashBuckle.Swagger (5.0.0-rc3). Nota: ci sono molti esempi che funzionano bene su .net core 2.0, ma le funzioni dello swaggbuckle Swashbuckle sono cambiate sull'ultima versione, quindi non posso usare quegli esempi.
.AddSecurityRequirement
(a livello globale) o .Security
(a livello operativo), come spiegato nelle risposte alla domanda collegata. AddSecurityDefinition
da solo non è abbastanza.