メインメニューを開く

差分

ページの作成:「Authorize属性が付いたWeb APIのデバッグをしたい。 == 設定 == Swagger UIを有効にする処理部分にAuthorizeボタンを表示する設定コード…」
Authorize属性が付いたWeb APIのデバッグをしたい。

== 設定 ==
Swagger UIを有効にする処理部分にAuthorizeボタンを表示する設定コードを追加する。
.NET 8.0だとProgram.csあたり。
<source lang="csharp">
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(options =>
{
options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
Description = "Authorizeボタンで表示される入力ダイアログには以下の形式でトークンを貼り付けろ \"Bearer {token}\"",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey,
Scheme = "Bearer"
});

options.AddSecurityRequirement(new OpenApiSecurityRequirement
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "Bearer"
}
},
new string[] {}
}
});
});
</source>

== 使い方 ==
上記のコードを入れるとSwagger UIにAuthorizeボタン(鍵マーク)が表示されるようになる。
Authorizeダイアログには以下の形式でトークンを貼り付けてログインする。
先頭の「Bearer 」が重要でトークンだけ貼り付けても動かないぞ。
Bearer {token}

== 動作確認 ==
Swagger UIでAuthorize属性が付いたWeb APIを呼び出してみる。
200が返ってくれば正常。
<source lang="csharp">
[ApiController]
[Route("api/[controller]")]
public class ExampleController : ControllerBase
{
[HttpGet, Route("hello")]
[Authorize] //トークン認証が必要
public IActionResult Hello()
{
var userId = User.FindFirst(ClaimTypes.Name)?.Value;
return Ok($"Hello,{userId}");
}
}
</source>

おわり。

[[category: ASP .NET Core]]