Saya mengembangkan beberapa Web Api dengan .Net core 3.0 dan ingin mengintegrasikannya dengan SwashBuckle.Swagger. Ini berfungsi dengan baik, tetapi ketika saya menambahkan otentikasi JWT, itu tidak berfungsi seperti yang saya harapkan. Untuk melakukan itu, saya menambahkan kode di bawah ini:
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
});
});
Setelah menambahkan AddSecurityDefinition
fungsi, saya dapat melihat tombol Otorisasi dan ketika saya mengkliknya, saya melihat formulir di bawah ini:
Kemudian saya mengetik Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh
, Setelah melakukan itu saya berharap melihat authorization: Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh
di header permintaan, ketika saya mengirim permintaan ke Web Api dari Swagger. Tetapi otorisasi tidak ditambahkan ke header permintaan. Saya menggunakan SwashBuckle.Swagger (5.0.0-rc3). Harap dicatat ada banyak sampel yang berfungsi dengan baik pada .net core 2.0, tetapi fungsi swashbuckle swagger telah berubah pada versi terbaru sehingga saya tidak dapat menggunakan sampel itu.
.AddSecurityRequirement
(secara global) atau .Security
(pada tingkat operasi) - sebagaimana dijelaskan dalam jawaban untuk pertanyaan terkait. AddSecurityDefinition
sendiri tidak cukup.