Я работаю над проектом ядра .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 секундына запрос.