ASP.NET jwt認証をすべてのコントローラーにデフォルト設定する
ASP.NETでjwtで認証保護を設定するにはコントローラー全体もしくはメソッドごとに以下のよう設定していると思います。
[HttpGet]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public IEnumerable<WeatherForecast> Get()デフォルトですべてのルートに認証保護を設定したい場合は以下のようにStartup.csに設定します。
Startup.cs(一部抜粋)public void ConfigureServices(IServiceCollection services)
{
services.AddControllers(options =>
{
// すべてのアクセスに対してjwtの認証保護を適用する
options.Filters.Add(new AuthorizeFilter(new AuthorizationPolicyBuilder(JwtBearerDefaults.AuthenticationScheme).RequireAuthenticatedUser().Build()));
})ASP.NET cookie認証をすべてのコントローラーにデフォルト設定するで紹介した方法と異なり、以下のようにAuthorizationPolicyBuilderのパラメータにjwtのスキーマを設定する必要があるので注意が必要です。
Startup.cs(一部抜粋)options.Filters.Add(new AuthorizeFilter(new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build()));
options.Filters.Add(new AuthorizeFilter(new AuthorizationPolicyBuilder(JwtBearerDefaults.AuthenticationScheme).RequireAuthenticatedUser().Build()));こうすることにより、すべてルートでjwtの認証保護が有効になります。