3

我们的组织有一个用于表单身份验证的中央解决方案。我正在尝试实现一个使用此外部 URL 的 ASP.Net MVC 应用程序 - 它一直工作到 RC!被释放了……

这是正在发生的事情

在 ActionAttribute 扩展中

如果未找到,我检查 s session var 检查是否找到请求数据卡盘,如果未找到则设置 session var - 如果找到则重定向到外部 URL 继续。

问题是,直到我更新到 RC1,这才有效。从那时起,有太多请求被发送到外部 URL,以至于它检测到 DoS 攻击并将我拒之门外!

我删除了重定向代码并将其替换为 Forms Auth 的 web.config 更改 - 同样的事情发生了......

4

3 回答 3

0

为什么不使用Microsoft Geneva而不是尝试推出您自己的身份验证提供程序?

于 2009-02-06T19:41:16.993 回答
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);
        } 
    }
}
于 2009-02-09T16:44:29.193 回答
0

我通过创建请求 IP 的静态字典并删除来自同一 IP 的重复请求来解决此问题。不是一个很好的解决方案 - 所以如果有人找到更好的解决方案 - 请告诉我。

于 2009-02-09T19:21:29.563 回答