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の認証保護が有効になります。