簡體   English   中英

ASP.Net MVC - 使用外部URL形成身份驗證

[英]ASP.Net MVC - forms authentication using an external URL

我們的組織擁有表單身份驗證的中央解決方案 我正在嘗試實現一個使用此外部URL的ASP.Net MVC應用程序 - 它一直工作到RC! 被釋放了......

這是正在發生的事情

在ActionAttribute擴展中

我檢查s會話var如果找不到檢查請求數據chuck如果找到,設置會話var如果找不到 - 重定向到外部URL如果找到繼續。

麻煩的是,直到我更新到RC1,這是有效的。 從那時起,如此多的請求被發送到外部URL,它檢測到DoS攻擊並關閉我!

我刪除了重定向代碼並將其替換為Forms Auth的web.config更改 - 同樣的事情發生了......

為什么不使用Microsoft Geneva而不是嘗試推送自己的身份驗證提供程序?

碼:

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);
        } 
    }
}

我通過創建請求IP的靜態字典並從同一IP中刪除重復請求來解決此問題。 不是一個非常好的解決方案 - 所以如果有人想出更好的解決方案 - 讓我知道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM