Как видно из комментариев, похоже, что это не так, но если это проблема, связанная с разрешениями, вот пример из официального репо. Skype - это приложение для телефона, поэтому, я думаю, необходимы разрешения, связанные с телефоном и контактами.
Из OfficeDev / skype-android-app-sdk-samples
Я наконец нашел способ сделать эту работу.
Во-первых, сообщения тезисов помогли мне добраться на правильном пути: http://directoryprogramming.net/forums/thread/788.aspx
Во-вторых, я получил скомпилированный dll Библиотеки LDAP Novell и использовал Mono.Security.Dll.
Решение:
Я добавил эту функцию к коду
// This is the Callback handler - after "Binding" this is called
public bool MySSLHandler(Syscert.X509Certificate certificate, int[] certificateErrors)
{
X509Store store = null;
X509Stores stores = X509StoreManager.LocalMachine;
store = stores.TrustedRoot;
//Import the details of the certificate from the server.
X509Certificate x509 = null;
X509CertificateCollection coll = new X509CertificateCollection();
byte[] data = certificate.GetRawCertData();
if (data != null)
x509 = new X509Certificate(data);
//List the details of the Server
//if (bindCount == 1)
//{
Response.Write("<b><u>CERTIFICATE DETAILS:</b></u> <br>");
Response.Write(" Self Signed = " + x509.IsSelfSigned + " X.509 version=" + x509.Version + "<br>");
Response.Write(" Serial Number: " + CryptoConvert.ToHex(x509.SerialNumber) + "<br>");
Response.Write(" Issuer Name: " + x509.IssuerName.ToString() + "<br>");
Response.Write(" Subject Name: " + x509.SubjectName.ToString() + "<br>");
Response.Write(" Valid From: " + x509.ValidFrom.ToString() + "<br>");
Response.Write(" Valid Until: " + x509.ValidUntil.ToString() + "<br>");
Response.Write(" Unique Hash: " + CryptoConvert.ToHex(x509.Hash).ToString() + "<br>");
// }
bHowToProceed = true;
if (bHowToProceed == true)
{
//Add the certificate to the store. This is \Documents and Settings\program data\.mono. . .
if (x509 != null)
coll.Add(x509);
store.Import(x509);
if (bindCount == 1)
removeFlag = true;
}
if (bHowToProceed == false)
{
//Remove the certificate added from the store.
if (removeFlag == true && bindCount > 1)
{
foreach (X509Certificate xt509 in store.Certificates)
{
if (CryptoConvert.ToHex(xt509.Hash) == CryptoConvert.ToHex(x509.Hash))
{
store.Remove(x509);
}
}
}
Response.Write("SSL Bind Failed.");
}
return bHowToProceed;
}
И я использовал его в процессе привязки
// Create Connection
LdapConnection conn = new LdapConnection();
conn.SecureSocketLayer = true;
Response.Write("Connecting to:" + ldapHost);
conn.UserDefinedServerCertValidationDelegate += new
CertificateValidationCallback(MySSLHandler);
if (bHowToProceed == false)
conn.Disconnect();
if (bHowToProceed == true)
{
conn.Connect(ldapHost, ldapPort);
conn.Bind(loginDN, password);
Response.Write(" SSL Bind Successfull ");
conn.Disconnect();
}
quit = false;
Основные элементы используют Обработчик SSL для динамичного получения Сертификата, и использующий X509StoreManager. LocalMachine так, чтобы, когда веб-сайт выполняет свое способное, чтобы сохранить и выбрать сертификаты.
91, "не может соединиться". Попытайтесь вставить сервер "ldap://x.x.x.x" формат, проверить, что userDN установлен правильно (с доменом и т.д.).
Я часто использую WireShark для наблюдения то, что продолжается на сетевом уровне (он знает о протоколе LDAP).
После моего предыдущего сообщения - если необходимо использовать безопасное соединение, попытайтесь использовать ldaps://в качестве префикса к адресу сервера.
Если нет никакой поддержки SSL/TLS, можно попробовать это - инструкции и обертка.NET для библиотеки OpenLDAP.
Один важный момент - существует настройки для уровня безопасности TLS в OpenLDAP, поэтому если Ваш сервер LDAP самоподписал сертификат Вы или должен импортировать его на стороне клиента или установить TLS для не проверки полномочий подписания *, который менее безопасен, конечно).
Я думаю, что, возможно, уже предложил этот ответ кому-то еще в другом вопросе.
[OtherQuestion на LDAP] [1]
Две проблемы я думаю: 1), Какой связывают Вас, пытаются сделать? SSL? Открытый текст? Анонимный?
2) То, как это настроено на eDirectory стороне для LDAP, связывает?
Инструмент LDAP Browser, Вы обращаетесь к тому в этой ссылке? Свободный Браузер LDAP
На eDirectory стороне они могут потребовать TLS для всей коммуникации LDAP, и они могут запретить Анонимный, связывает.
Можете Вы просить, чтобы люди в другом конце включили LDAP, прослеживающий (Используя DStrace с +LDAP включенной опцией, некоторые ссылки для того, как использовать Dstrace на взгляде Novell eDirectory на: Различные типы Получения Dstrace и понимают Трассировку DS для менеджера по Идентификационным данным.)
Это обычно будет показывать сообщение об ошибке, которое просветит Вас.
Мое предположение, любой Требуют, чтобы TLS был включен, и Вы не могли бы делать, успешный SSL связывают.
Если так, попытайтесь соединиться на порте 636 с SSL, включенным, и полностью определенный DN для пользователя, в которого Вы пытаетесь войти как.
Если Вы пробуете SSL, включенным, и Вы не получаете раскрывающееся поле о принятии доверяемого certficate корня древовидного CA, то, возможно, CA или сертификат SSL TAHT, eDirectory сервер является пользователем, истекло или повреждается. (Существует любое количество причин для этого, которое может быть распространено, и взять только момент для фиксации).
Обычно в Dstrace Вы будете видеть ошибку о сертификате SSL, если будет проблема. Пример с точки зрения менеджера по Идентификационным данным Novell сертификата с истекшим сроком находится в этой статье: Сертификат Истек, А также некоторые детали о том, как исправить сертификаты.
Следующая возможность состоит в том, что DN, который Вы указываете, не совсем корректен.
Сообщите мне, нуждаетесь ли Вы в большем количестве помощи.