ASP.Net MVC и прокси и Active Directory аутентификация. Как улучшить производительность? - PullRequest
0 голосов
/ 30 января 2012

Я довольно новичок в разработке в среде активных каталогов.Поэтому, пожалуйста, потерпите меня ...

[A] Я запустил Fiddler для навигации по некоторым страницам на моем сайте и заметил следующее.

fiddler

[B] Ошибки 401, как я понимаю, вызваны тем, как работает NTLM ..

401.2

[C] Но я также за прокси, так чтоЯ также получаю эти ответы

proxy

Я также заметил, что вкладка аутентификации в fiddler содержит комбинацию этих результатов для

результатов прокси,[C]

Заголовок прокси-аутентификации присутствует: согласование

Заголовок прокси-аутентификации присутствует: Kerberos

Заголовок прокси-аутентификации присутствует: NTLM

Нет заголовка WWW-аутентификации.

401.2 Результаты [B]

Нет заголовка прокси-аутентификации.

WWW-Authenticate Header присутствует: Negotiate

WWW-Authenticate Header присутствует: NTLM

Примечание: в моих контроллерах есть пользовательский атрибут Authorize, который наследуется от класса AuthorizeAttribute.

        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 и прокси, так как они, похоже, вызывают проблемы с производительностью.

И,

Можно ли применить сжатие gzip / deflate к результатам 401 и прокси, чтобы уменьшить их размеры?

1 Ответ

0 голосов
/ 22 марта 2012

Хорошо, я не администратор сети. Поэтому, пожалуйста, не цитируйте меня по этому поводу, но вот что я думаю, что произошло. У нас есть несколько контроллеров домена в нашей сети, я думаю, что они каким-то образом передают запросы друг другу. С тех пор настройки изменились, и ненужные вызовы, похоже, исчезли / стали меньше

...