Как предложил @Chetan Ranpariya в комментариях, я в итоге реализовал производный атрибут (из AuthorizeAttribute
). Согласно документации , способ сделать это - переопределить метод AuthroizeCore
.
При переопределении предоставляет точку входа для пользовательских проверок полномочий.
Вот рабочий пример для дальнейшего использования
public class MyAuthorizeAttribute : AuthorizeAttribute
{
public string AuthSchemes { get; set; }
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (this.AuthSchemes != null)
{
string scheme = httpContext?.User?.Identity?.AuthenticationType;
if (string.IsNullOrWhiteSpace(scheme))
{
return false;
}
return this.AuthSchemes.Split(',').Contains(scheme);
}
return base.AuthorizeCore(httpContext);
}
}
Атрибут можно использовать так
[MyAuthorize(AuthSchemes = CookieAuthenticationDefaults.AuthenticationType)]
public class MyController : Controller { }