Включение определенных схем аутентификации / авторизации для каждой конечной точки - PullRequest
1 голос
/ 20 апреля 2019

ASP.NET имеет атрибут [Allow Anonymous], который позволяет обойти авторизацию на определенной конечной точке. Мне интересно, есть ли общий способ включения определенных схем аутентификации на конечной точке для каждой конечной точки.

Представьте, что вы хотите поддерживать разные схемы, такие как Basic, Bearer и т. Д. Но вы не хотели поддерживать все схемы на всех конечных точках. Кажется, что удобный способ сделать это - создать атрибуты, такие как [BasicAuth] и [BearerAuth], чтобы вы могли просто аннотировать конкретные конечные точки, которые вы хотите включить. Однако, глядя на работу атрибутов AuhtorizationAttributes, кажется, что они ведут себя как логическое И, а не логическое ИЛИ.

Например, если я аннотирую конечную точку обоими [BasicAuth] и [BearerAuth], и один из них вернет False на IsAuthorized, все закончится неудачей. Это заставляет меня думать, что я либо смотрю не в том месте, либо у меня необычный вариант использования.

Я смотрю в неправильном направлении?

1 Ответ

0 голосов
/ 20 апреля 2019

AuthorizationAttribute поддерживает различные виды авторизации. Может использоваться для поддержки Policies или Roles. Если вам нужна логика ИЛИ, вы можете использовать атрибут авторизации с разделенной запятой строкой для ролей. Это позволит вашей конечной точке быть доступной для этих ролей.

Используйте это для логики ИЛИ:

[Authorize(Roles = "HRManager,Finance")]
public class SalaryController : Controller
{
}

Для логики AND

[Authorize(Roles = "PowerUser")]
[Authorize(Roles = "ControlPanelUser")]
public class ControlPanelController : Controller
{
}

Источник Ролевая авторизация


Я бы порекомендовал прочитать всю Авторизацию Документацию.

...