Доступ к Active Directory LDAP в ядре ASP.net очень медленный - PullRequest
0 голосов
/ 22 февраля 2019

Я работаю над проектом ядра .net, который требует аутентификации для LDAP AD, я использую библиотеку Novell, чтобы помочь мне подключиться к серверу LDAP AD, но когда я запускаю код, мне требуется около 2 минут, чтобы получить ответ.Может кто-нибудь показать мне, что не так?К вашему сведению, я размещаю основной проект .net на сервере Ubuntu, а сервер LDAP AD находится на сервере Windows Azure.
Вот код, спасибо.

public ADResponse LdapSearch(string server, string filter, string username, string password)
        {
            try
            {
                using (var connection = new LdapConnection { SecureSocketLayer = false })
                {
                    string DN = configuration.GetValue<string>("LdapServer:TeacherDN");
                    if (server == configuration.GetValue<string>("LdapServer:LdapStudent"))
                    {

                        DN = configuration.GetValue<string>("LdapServer:sphStudentDN");
                    }
                    int serverPort = configuration.GetValue<int>("LdapServer:sphLdapPort");

                    string[] attributes = { "name", "mail", "extensionAttribute2", "memberOf" };

                    connection.Connect(server, serverPort);
                    connection.Bind(username, password);
                    if (connection.Bound)
                    {
                        ADResponse data = new ADResponse();

                    LdapSearchQueue queue = connection.Search(DN,
                                    LdapConnection.SCOPE_SUB,
                                     filter,
                                     attributes,
                                     false,
                                    (LdapSearchQueue)null,
                                    (LdapSearchConstraints)null);

                    LdapMessage message;
                    while ((message = queue.getResponse()) != null)
                    {
                        if (message is LdapSearchResult)
                        {
                            LdapEntry entry = ((LdapSearchResult)message).Entry;
                            LdapAttributeSet attributeSet = entry.getAttributeSet();
                            System.Collections.IEnumerator ienum = attributeSet.GetEnumerator();
                            while (ienum.MoveNext())
                            {
                                LdapAttribute attribute = (LdapAttribute)ienum.Current;
                                string attributeName = attribute.Name;
                                string attributeVal = attribute.StringValue;

                                if (attributeName == "name")
                                {
                                    data.name = attributeVal;
                                }
                                else if (attributeName == "mail")
                                {
                                    data.mail = attributeVal;
                                }
                                else if (attributeName.ToLower() == "postofficebox")
                                {
                                    data.pobox = attributeVal;
                                }
                                else if (attributeName.ToLower() == "extensionattribute2")
                                {
                                    data.extensionattribute = attributeVal;
                                }
                                else if (attributeName.ToLower() == "memberof")
                                {
                                    data.memberof = attributeVal;
                                }

                            }
                        }
                    }
                    connection.Disconnect();
                    return data;
                    }
                }
            }
            catch (LdapException ex)
            {
                // Log exception
            }
            return null;
        }

ОБНОВЛЕНИЕ :
Скорость запросов намного выше на сервере Windows, поэтому я уже пытался разместить его наWindows Server и процесс запроса ldap займет всего около 5 секунд.Кто-нибудь знает, почему это происходит?

ОБНОВЛЕНИЕ :
Я попытался получить доступ к другой AD ( Из этого публичного теста AD ) с сервера Ubuntu, и его запуск прошел гладко и занял всего 2 секундына запрос.

...