2009-02-06 9 views
3

Notre organisation dispose d'une solution centrale pour l'authentification par formulaires. J'essaye de mettre en application une application d'ASP.Net MVC qui utilise cette URL externe - et cela a fonctionné jusqu'au RC! a été libéré ...ASP.Net MVC - Authentification de formulaires à l'aide d'une URL externe

Voici ce qui se passe

Dans un ActionAttribute Extension

Je vérifie pour la session s var si pas trouvé chèque pour un mandrin de données de demande si trouvé, définissez la session var si introuvable - rediriger vers l'URL externe si trouvé continuer. Le problème est que jusqu'à ce que j'ai mis à jour à RC1, cela a fonctionné. Depuis lors, tant de demandes sont envoyées à l'URL externe qu'il détecte une attaque DoS et me ferme!

J'ai supprimé le code de redirection et remplacé par les changements web.config pour les formulaires Auth - et la même chose est arrivé ...

+0

ActionAttribute ou AuthorizeAttribute? Un petit code aiderait aussi. – tvanfosson

Répondre

0

Je résolu ce problème en créant un dictionnaire statique demandant IP, déposer des demandes en double de la même adresse IP. Pas une très bonne solution - donc si quelqu'un trouve une meilleure solution - faites le moi savoir.

+0

En fin de compte, le problème était avec le fait que la validation, en fonction du contenu du jeton, se débarrassait de lui - sans exception étant jeter .... :( – user63466

0

Pourquoi ne pas utiliser Microsoft Geneva au lieu d'essayer de rouler votre propre fournisseur d'authentification?

+0

parce que c'est hors de mes mains - quand je dirige ma propre entreprise - je vais avoir cette option, malheureusement, en tant que bonne entreprise citoyenne, j'ai besoin d'utiliser ce qui existe déjà et est utilisé par toutes les autres ... Avez-vous de vraies réponses? – user63466

+0

Je ne pense pas que vous avez vraiment considéré ce que j'ai dit, si vous ne le considérez pas comme une "vraie réponse". Genève fait ce que vous voulez. –

+0

Téléchargé le livre blanc de Genève. Lis le. Nécessite un changement de côté du serveur = Hors de mes mains. Pas une vraie solution dans ce cas. Je n'essaie pas de te faire du mal à moi ou quoi que ce soit, mais j'ai besoin d'une solution côté client sans changer complètement l'architecture ... Merci! – user63466

0

CODE:

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

Peu importe si j'utilise ce code ou simplement définir l'authentification Forms dans la configuration Web avec une URL externe - le même comportement est observé - continuer à obtenir plusieurs hits à l'URL externe (plus de 30/sec). – user63466

Questions connexes