У меня проблема с подключением к нашему серверу LDAP с использованием пакета NuGet «Novell.Directory.Ldap.NETStandard2_0». Мое приложение представляет собой Xamarin.Forms с обновленной частью Andoid & UWP, основанной на NetStandard 2.0, с использованием Visual Studio 2019. Я не смог найти никаких встроенных функций в Netcore2.0 для использования LDAP, поэтому я использовал пакет Nuget (Novell.Directory.Ldap.NETStandard2_0 от Novell, dsbenghe, mkostreba).
У меня также есть использовал инструмент запроса LDAP для Windows, чтобы проверить соединение, и это работает. Но когда я пытаюсь установить sh соединение в моем приложении, я получаю сообщение об ошибке с кодом ошибки 91. Я пробовал его с полным именем хоста и с прямым IP-адресом сервера домена, но я получаю ту же ошибку результат. Я пробовал это с отладкой UWP, а не android. Я еще не начал делать правильный запрос учетных данных, потому что само соединение сначала должно быть в порядке.
Это мой код: (при нажатии простой кнопки)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Novell.Directory.Ldap;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
using System.ComponentModel;
namespace App1.view
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class Page2 : ContentPage
{
public Page2()
{
InitializeComponent();
}
private void button2_Clicked(object sender, EventArgs e)
{
try
{
LdapConnection conn = new LdapConnection();
conn.Connect("ldapserverhostname", 389);
conn.Bind("username query", "some password");
DisplayAlert("Error", "succesvol", "ok");
conn.Disconnect();
}
catch (LdapException f)
{
DisplayAlert("Error", f.ResultCode.ToString(), "ok");
return;
}
catch (Exception f)
{
DisplayAlert("Error", f.Message, "ok");
return;
}
}
}
}
Кто мог бы помочь мне с этим?
обновление 16 апреля 2020: я установил соединение + успешное связывание с нашим сервером LDAP с помощью консольного приложения WPF NetCore, а также с настольным приложением WPF NetCore, использующим ту же информацию о сервере и информацию о пользовательских запросах. Но я не могу заставить это работать под Xamarin.Forms UWP или с выделенным приложением UWP. О брандмауэре компьютера не может быть и речи (я считаю), потому что я могу общаться с сервером LDAP несколькими способами. Я попытался сделать это с боковой загрузкой моего приложения Xamarin.Forms UWP, но безрезультатно. >> Каждый раз при переходе к первому улову.
Помимо использования Novell Ldap Nuget, я также попробовал пакет совместимости Windows для NetCore в своем приложении UWP и Xamarin.Forms, но это будет приводят к ошибке «не поддерживаемая платформа».
вот мой рабочий код из настольного приложения WPF NetCore:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using Novell.Directory.Ldap;
using Novell.Directory;
namespace WpfApp3
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
string ldapHost = "fullyhostname.com";
String loginDN = "CN=MyUserName,OU=HK,something=Users,DC=ourdomainname,DC=com";
String password = "mypassword";
LdapConnection conn = new LdapConnection();
try
{
conn.Connect(ldapHost, 389);
if (conn.Connected)
{
MessageBoxResult r = MessageBox.Show("connection succeeded");
}
conn.Bind(loginDN, password);
MessageBoxResult t = MessageBox.Show("bind succeeded");
}
catch (LdapException f)
{
Console.WriteLine("Error1:" + "code= " + f.ResultCode.ToString());
Console.WriteLine("Error1:" + "code= " + f.LdapErrorMessage);
return;
}
catch (Exception f)
{
Console.WriteLine("Error:" + f.Message);
return;
}
conn.Disconnect();
}
}
}