[英]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.