C# не удалось загрузить атрибут правого пользователя в LDAP - PullRequest
0 голосов
/ 14 июля 2020

Я не могу получить правильные атрибуты пользователя из LDAP, используя приведенный ниже код:

        string login = "UID=" + txtUsername.Text + ",DC=example,DC=com";
        string password = txtPwd.Text;
        string domain = txtDomain.Text;
        int port = Convert.ToInt32(txtPort.Text);
        string searchBase = "DC=example,DC=com";
        string searchFilter = "(objectclass=person)";

        LdapConnection conn = new LdapConnection();

        try
        {
            conn.Connect(domain, port);
            conn.Bind(login, password); 

            HashSet<string> users = new HashSet<string>();
            LdapSearchResults searchResults = conn.Search(searchBase,
                                                LdapConnection.SCOPE_SUB,
                                                searchFilter,
                                                null,
                                                false);

            while (searchResults.hasMore())
            {
                var nextEntry = searchResults.next();
                nextEntry.getAttributeSet();
                var attr = nextEntry.getAttribute("cn");

                if (attr == null)
                {
                    users.Add(nextEntry.getAttribute("mail").StringValue);
                }
                else
                {
                    users.Add(attr.StringValue);
                }

                Session["Name"] = users.First();

                Response.Redirect("~/default.aspx");
            }
        }
        catch (LdapException ex)
        {
            lblErr.Visible = true;
            lblErr.Text = "Error authenticating: " + ex.LdapErrorMessage;
            return;
        }
        catch (Exception ex)
        {
            lblErr.Visible = true;
            lblErr.Text = "Error authenticating: " + ex.Message;
        }
        finally
        {
            conn.Disconnect();
        }

например, я хочу получить атрибуты пользователя по имени Альберт Эйнштейн, но я всегда получаю атрибуты Isaa c Newton независимо от того, какое имя пользователя я ввел

Я использую эту ссылку: Как найти группу пользователей с LDAP в C# Core 2

i ' m с использованием LDAP-сервера publi c ForumSYS, для домена он должен быть ldap.forumsys.com, а порт - 389

1 Ответ

1 голос
/ 14 июля 2020

Когда вы говорите «независимо от того, какое имя пользователя я ввел», вы имеете в виду txtUsername.Text? Потому что вы используете это только для аутентификации, а не для поиска. Вы ищете каждого пользователя в каталоге, потому что вы установили фильтр на (objectclass=person).

Если вы хотите найти только одного пользователя, установите фильтр, чтобы найти только этого пользователя. Например:

string searchFilter = "(cn=Albert Einstein)";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...