Пользовательская проверка FormsAuthenticationTicket - PullRequest
0 голосов
/ 28 марта 2012

У меня есть веб-сайт, на котором размещено множество приложений asp.net.Некоторые написаны на MVC2, некоторые написаны на MVC3, некоторые написаны не дома и не развернуты в двоичном формате (хотя мы можем найти исходный код), и многие другие написаны в веб-формах ASP.Net 2.0.На всех этих сайтах мы используем одну страницу входа из приложения для входа.Мы можем сделать это, потому что все приложения совместно используют:

  1. Один и тот же пул приложений
  2. Один и тот же ключ компьютера
  3. Одно и то же имя файла cookie для входа в систему

Моя проблема в том, что они также разделяют проблему безопасности, а не защиту от подделки cookie.Мой план состоит в том, чтобы добавить некоторую дополнительную информацию (первые 2 байта ip, user agent) в файл cookie для входа в систему (возможно, в поле useradata), а затем проверять это при каждом запросе, прежде чем принимать файл cookie.

Мой вопросгде asp.net проверяет билет проверки подлинности форм и загружает пользователя, и я могу переопределить это, чтобы проверить несколько дополнительных вещей перед использованием имени пользователя.

Было бы плюсом, если бы мне не нужно было добавлять этокод для каждого global.cs и может поместить его в некоторую dll и ссылаться на эту dll в файле конфигурации.

1 Ответ

0 голосов
/ 09 августа 2013

Вы не можете переопределить Аутентификацию, кроме как путем написания нового FormsAuthenticationModule , но есть более простой способ. в то время как запросы конвейера ASP.NET обрабатывают, на каждом этапе возникает событие, здесь вы можете подключиться к конвейеру ASP.NET и выполнить свою работу.

ASP.NET pipeline Authentication & Authorization steps

В вашем случае вы можете проверить ваш файл cookie в PostAuthenticateRequestHandler обработчике события.

 HttpCookie authCookie = Context.Request.Cookies["YourFormsCookieName"];
 if (IsValidAuthCookie(authCookie))
 {
   // do some stuff
 }
 else
 {
   // expire cookie using FormsAuthentication.Signout()
   // do some stuff
 }

это полезная ссылка: Аутентификация с помощью форм

...