2009-02-06 2 views
3

Наша организация имеет центральное решение для проверки подлинности форм. Я пытаюсь реализовать приложение ASP.Net MVC, которое использует этот внешний URL-адрес - и это работало до RC! был выпущен ...ASP.Net MVC - аутентификация форм с использованием внешнего URL

Вот что происходит

В ActionAttribute Extension

я проверяю для s сессии вара если не найден чека на патрон запроса данных, если найдено, то сессионный вар если не найден - перенаправить на внешний URL если найдено продолжить.

Проблема в том, что до тех пор, пока я не обновился до RC1, это сработало. С тех пор так много запросов отправляются на внешний URL-адрес, что он обнаруживает DoS-атаку и отключает меня!

Я удалил код перенаправления и заменить его с изменениями web.config для форм Auth - и то же самое случилось ...

+0

ActionAttribute или AuthorizeAttribute? Маленький код тоже поможет. – tvanfosson

ответ

0

Я решил эту проблему путем создания статического словаря запрашивающих IP-адресов, и опуская повторяющиеся запросы от того же IP. Не очень хорошее решение - так, если кто-нибудь выяснит лучшее решение - дайте мне знать.

+0

Как выясняется, проблема заключалась в том, что валидация, в зависимости от содержания токена, избавилась от нее - без каких-либо исключений было выбрано .... :( – user63466

0

Почему бы не использовать Microsoft Geneva вместо того, чтобы пытаться свернуть свой собственный провайдер аутентификации?

+0

becuse это из моих рук - когда я запускаю свою собственную компанию - у меня будет такой вариант, к сожалению, как хороший корпоративный гражданин, мне нужно использовать то, что уже существует, и используется всеми другими приложениями в организации ... Есть ли у вас реальные ответы? – user63466

+0

Я не думаю, что вы действительно считали, что я сказал, если вы не считаете это «реальным ответом». Женева делает то, что вы хотите. –

+0

Скачать белую газету в Женеве. Прочтите. Требуется смена стороны сервера = Из моих рук. Не настоящее решение в этом случае. Не пытайтесь навредить вам эго или чему-то еще, но мне нужно решение на стороне клиента, не меняя полностью архитектуру ... Спасибо! – user63466

0

КОД:

public class MyAuthenticate : ActionFilterAttribute 
    {   
     public override void OnActionExecuting(ActionExecutingContext filterContext) 
     { 
      if (filterContext.HttpContext.Session["user"] == null) 
      { 
       using (Authenticator dp = new Authenticator()) 
       { 
        MyUser mu; 
        string data = string.Empty; 
        try 
        { 
         data = filterContext.HttpContext.Request["Data"]; 
        } 
        catch { }; 

        if (!string.IsNullOrEmpty(data)) 
        { 
         mu = dp.Redeem(data); 
         if (mu.authenticated) 
         {        
          filterContext.HttpContext.Session.Clear(); 
          AuthenticatedUser user = new AuthenticatedUser(mu); 
          filterContext.HttpContext.Session.Add("user", user); 
          FormsAuthentication.SetAuthCookie(user.UserId, false); 
         } 
         else 
         { 
          filterContext.HttpContext.Response.Redirect("MY EXTERNAL URL GOES HERE!!"); 

         } 
        } 
        else 
        { 
         filterContext.HttpContext.Response.Redirect("MY EXTERNAL URL GOES HERE!!"); 
        } 
       } 
      } 
      base.OnActionExecuting(filterContext); 
     } 
    } 
} 
+0

Не имеет значения, использую ли я этот код или просто устанавливаю auth в форме в веб-конфигурации с внешним URL-адресом - такое же поведение наблюдается - продолжайте получать несколько обращений к внешнему URL-адресу (более 30/сек). – user63466