ASP.NET Core: как регистрировать исключения авторизации

Существует ли элегантный способ перехвата исключения Authorization в ASP.NET без написания какого-либо промежуточного программного обеспечения или класса AuthorizationRequirement.

Я строю политику авторизации следующим образом.

services.AddAuthorization(options =>
    {
        options.DefaultPolicy = new AuthorizationPolicyBuilder()
            .RequireAuthenticatedUser()
            .RequireClaim(JwtRegisteredClaimNames.Azp, authorizedParties)
            .RequireClaim(CustomClaimNames.Customer)
            .Build();
    });

Я не вижу никакого события OnAuthorizationFailed, как OnAuthenticationFailed :-)

Исключение Authentication можно перехватить следующим образом.

  bearerOptions.Events = new JwtBearerEvents()
  {
      OnAuthenticationFailed = context =>
      {
        Log.Logger.Error(context.Exception.ToString());
        return Task.CompletedTask;
      }
   };

Но я не нашел аналогичного способа захвата исключения авторизации.

Событие OnForbidden есть, но свойство Exception недоступно в объекте ForbiddenContext.


person Shaheer    schedule 23.04.2021    source источник
comment
Вы можете перейти по ссылке.   -  person Yiyi You    schedule 26.04.2021
comment
@YiyiYou Спасибо. Эта ссылка объясняет, как поймать исключение аутентификации. Я ищу решение, как зафиксировать исключение авторизации.   -  person Shaheer    schedule 29.04.2021