| Четверг, 14 марта, 2013
Метки: ASP.NET Web API Комментарии: 0
Приложение Web API создано, и нужно контролировать доступ к нему. В этой статье рассмотрим некоторые методы защиты приложения Web API от несанкционированного доступа. Рассмотрим основные возможности процедур аутентификации и авторизации в ASP.NET Web API.
В Web API аутентификация происходит на хосте. Для веб-хостинга - это IIS (Internet Information Services), где используется HTTP-модули для аутентификации. Можно настроить проект для использования любого модуля встроенного в IIS или ASP.NET, или написать модуль самостоятельно, выполняющий свою собственную аутентификацию.
Если хост подтверждает подлинность пользователя, то создается объект IPrincipal, который представляет контекст защиты в выполняемом коде. Этот объект прикрепляется к текущему потоку, путем записи в свойство Thread.CurrentPrincipal. Principal-объект имеет свойство Identity, в котором находится объект, хранящий информацию о пользователе. Если пользователь аутентифицирован, то свойство Identity.IsAuthentificated возвращает значение true, а для анонимных запросов false.
Вместо аутентификации на хосте можно написать код проверки подлинности в обработчике HTTP-сообщений. В этом случае обработчик проверяет сообщение HTTP и инициализирует principal-объект.
Когда нужно использовать обработчики HTTP-сообщений для аутентификации? Приведем некоторые "за" и "против":
В общем, если вы не пишете самоуправляемую среду для хостинга, то лучше выбрать HTTP-модули.
Если приложение выполняет какую-то свою аутентификацию, то нужно прописать объект principal в двух местах.
В следующем у коде показано, как задать объект principal:
private void SetPrincipal(IPrincipal principal) { Thread.CurrentPrincipal = principal; if (HttpContext.Current != null) { HttpContext.Current.User = principal; } }
Для веб-хостинга нужно установить principal в двух местах, иначе контекст защиты не будет целостным. Для самоуправляемого хостинга нужно проверить свойство HttpContext.Current на null.
Copyright © CodeHint.ru 2013-2025 (v2.4.7 - работает на Angular Universal)Калькулятор инвест-портфеля