Подтвердить что ты не робот

Фильтры проверки подлинности в MVC 5

Фильтры аутентификации из Примечания к выпуску страница

Фильтры аутентификации - это новый вид фильтра в ASP.NET MVC, который запускается до фильтров авторизации в конвейере ASP.NET MVC и позволяют указать логику аутентификации для каждого действия, для каждого контроллера, или глобально для всех контроллеров. Процесс фильтрации аутентификации учетные данные в запросе и предоставить соответствующий директор. Фильтры проверки подлинности также могут ответ на несанкционированные запросы.

Может ли кто-то обеспечить практическое использование этого? Где я могу использовать этот AuthenticationFilters точно?

Раньше я использую для управления списком контроля доступа для действия/контроллера, написав собственный CustomAttribute: FilterAttribute, IAuthorizationFilter и реализуя public void OnAuthorization(AuthorizationContext filterContext). Можно ли здесь использовать этот AuthenticationFilter?

4b9b3361

Ответ 1

Как говорится в документах, настраиваемый фильтр проверки подлинности обеспечивает аутентификацию для каждого действия, для каждого контроллера или глобально.

В качестве примера используется изменение аутентификации только для нескольких выбранных контроллеров. Предположим, например, что весь ваш сайт использует проверку подлинности с использованием форм, где принципы берутся из форм cookie.

Однако у вас есть выбранный контроллер, который действует как сервер ресурсов OAuth2, где запросы поступают от поставщиков услуг (серверов), и нет куки-форм форм, а скорее, токен доступа OAuth2 предоставляется сервером поставщика услуг.

В этом случае пользовательский фильтр аутентификации входит в игру - его задача заключается в том, чтобы перевести токен на принципала на время жизни только текущего запроса, только для единственного контроллера, который действует как конечная точка сервера ресурсов. Вы не хотите, чтобы весь сайт принимал токены OAuth2, а не один конкретный контроллер.

Причиной введения фильтров проверки подлинности является разделение аутентификации от авторизации, где:

  • аутентификация предназначена для установления принципала для текущего запроса
  • авторизация заключается в проверке того, разрешено ли текущему директору выполнять текущий запрос

Это не было четко разделено до того, как были введены фильтры аутентификации. Лично я использовал фильтры авторизации для этого, однако имел два отдельных слоя фильтров в этом конкретном порядке (сначала аутентификация, а затем авторизация).

Ответ 2

Пользовательская аутентификация может быть создана путем реализации IAuthenticationFilter. Он может использоваться, когда текущий пользовательский принцип необходим для изменения для выполнения определенной части действия контроллера путем переопределения метода OnAuthentication. Можно выполнить дополнительную задачу по запросу, переопределив метод OnAuthenticationChallenge.