【问题标题】:ASP.Net MVC & Proxy & Active Directory authentication. How to improve performance?ASP.Net MVC & 代理 & Active Directory 身份验证。如何提高性能?
【发布时间】:2012-01-30 08:04:15
【问题描述】:

我对在活动目录环境中进行开发还很陌生。所以请多多包涵……

[A] 我一直在运行 fiddler 浏览我网站上的一些页面,我注意到以下内容。

[B] 据我了解,401 错误是由 NTLM 的工作原理引起的。

[C] 但我也支持代理,所以我也会收到这些响应

我还注意到 fiddler 中的 auth 选项卡结合了这些结果

代理结果。 [C]

存在代理验证标头:协商

存在代理验证标头:Kerberos

存在代理验证标头:NTLM

不存在 WWW-Authenticate 标头。

401.2 结果 [B]

没有 Proxy-Authenticate Header 存在。

存在WWW-Authenticate Header:协商

存在WWW-Authenticate Header:NTLM

注意:在我的控制器中,我有一个继承自 AuthorizeAttribute 类的自定义 Authorize 属性。

        protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        if (base.AuthorizeCore(httpContext))
        {
            /* Return true immediately if the authorization is not 
            locked down to any particular AD group */
            if (Groups == null)
                return true;

            //admin user -> allow all actions
            if (IsUserInRole("Admin"))
            {
                return true;
            }
            else
                //Domain_Users -> continue for division level permissions
                if (IsUserInRole("Production_Users") || IsUserInRole("Engineering_Users") || IsUserInRole("Quality_Users"))
                {
                    //if we've gotten here, the user is a domain user & in a specific division,
                    //depending on the view we're dealing with, and the users permissions allow/deny
                    switch (httpContext.ApplicationInstance.Request.RequestContext.RouteData.Values["action"].ToString())
                    {
                        case "Add":
                            return HttpContext.Current.User.IsInRole(GetGroupFromAppConfig("AddAllow"));
                        case "Edit":
                            return HttpContext.Current.User.IsInRole(GetGroupFromAppConfig("EditAllow"));
                        case "Delete":
                            return HttpContext.Current.User.IsInRole(GetGroupFromAppConfig("Deletellow"));
                        default:
                            //default = no action type is specified => we're dealing with a "view" 
                            //& as the user has division level permissions, allow.
                            return true;
                    }
                }
                else
                {
                    return false;
                }

        }
        return false;
    }

现在我的问题...是否可以减少一些 401 结果和代理结果,因为它们似乎会导致性能问题。

还有,

是否可以对 401 和代理结果应用 gzip/deflate 压缩以减小它们的大小?

【问题讨论】:

  • 对于服务器授权问题,请考虑使用 web.config 中的位置标签公开文件位置

标签: asp.net-mvc asp.net-mvc-3 iis active-directory iis-7.5


【解决方案1】:

好的,我不是网络管理员。所以请不要引用我的话,但这是我认为已经发生的事情。我们的网络上有多个域控制器,我认为它们以某种方式在彼此之间来回传递请求。从那时起,设置发生了变化,不必要的电话似乎已经消失/减少了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多