Название: Проблема с подключением к серверу LDAP с проектом Xamarin.Forms c# - PullRequest
0 голосов
/ 14 апреля 2020

У меня проблема с подключением к нашему серверу 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;
            }
        }
    }
}

enter image description here

Кто мог бы помочь мне с этим?

обновление 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();
    }
}
}

enter image description here

...