Существует ли элегантный способ перехвата исключения 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.