.Net core 3.0でWeb APIをいくつか開発していて、それをSwashBuckle.Swaggerと統合したいと考えています。正常に機能していますが、JWT認証を追加すると、期待どおりに機能しません。そのために、以下のコードを追加しました。
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
});
});
AddSecurityDefinition
関数を追加すると、[承認]ボタンが表示され、クリックすると、次のフォームが表示されます。
次に、と入力しますBearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh
。それを行った後authorization: Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh
、SwaggerからWeb APIにリクエストを送信すると、リクエストのヘッダーに表示されるはずです。ただし、承認はリクエストヘッダーに追加されません。私はSwashBuckle.Swagger(5.0.0-rc3)を使用しています。.netコア2.0で正常に動作するサンプルは多数ありますが、最新バージョンではSwashbuckleのSwagger関数が変更されているため、そのサンプルを使用できません。
.AddSecurityRequirement
(グローバルに)または.Security
(操作レベルで)追加することです。AddSecurityDefinition
一人では十分ではありません。