C# LDAP SetPassword выдает Сервер RPC недоступен

Я пытаюсь создать нового пользователя -> установить пароль и включить учетную запись.

раньше я использовал 1 отдельный объект, но, просмотрев несколько сообщений, я решил использовать «использование» для 3 разных операций.

        string strDisplayName = txtFirstName.Text + " " + txtLastName.Text;
        string strUser = txtLoginName.Text;

        string pw = "pass@123";


        using (var objADAM = new DirectoryEntry("LDAP://" + adlink + "/CN=Users,DC=SS,DC=COM", "ss\\luser", "pass@123", AuthenticationTypes.Secure))
        {


            const long ADS_OPTION_PASSWORD_PORTNUMBER = 6;
            const long ADS_OPTION_PASSWORD_METHOD = 7;

            const int ADS_PASSWORD_ENCODE_CLEAR = 1;
            string strPort = "389";
            int intPort = Int32.Parse(strPort);

            using (var objUser = objADAM.Children.Add("CN=" + strUser, "user"))
            {
                objUser.Properties["sAMAccountName"].Add(strUser);
                objUser.CommitChanges();
            }
        }

        using (var user = new DirectoryEntry("LDAP://" + adlink + "/CN=" + strUser + ",CN=Users,DC=SS,DC=COM", "ss\\rluser", "pass@123"))
        {
            user.Invoke("SetPassword", new object[] { "password" });
            user.CommitChanges();
        }



        using (var user = new DirectoryEntry("LDAP://" + adlink + "/CN=" + strUser + ",CN=Users,DC=SS,DC=COM", "ss\\rluser", "pass@123"))
        {

            //Enable account and change password on first logon flag
            user.Properties["userAccountControl"].Value = 0x200;
            user.Properties["pwdLastSet"].Value = 0;
            user.CommitChanges();

        }

Я должен упомянуть, что я нахожусь за пределами домена и пытаюсь подключиться к удаленному AD в другом домене. Однако переданы учетные данные ADMIN.

Создание пользователя проходит гладко (после некоторых заминок с открытием порта и соединениями LDAP), но проблема возникает при вызове invoke ->setpassword.

Ошибка: «сервер RPC недоступен», просто чтобы убедиться, что я не делаю что-то неправильно в своем коде, я загрузил инструмент администрирования LDAP и попытался сбросить пароль существующего пользователя -> та же ошибка

шаги -проверил запущенную службу RPC -открыл порты RPC -135, бла-бла... в основном каждый порт нужно открыть :|

любая помощь приветствуется.

Спасибо, Раджат.


person Rajat banerjee    schedule 10.10.2013    source источник
comment
Вы нашли обходной путь по этому поводу?   -  person Ravi Tuvar    schedule 28.09.2015


Ответы (2)


Например:

            DirectoryEntry de = new DirectoryEntry();
            de.Path = "LDAP://dnsname.domain.com:389/OU=Companies;

Microsoft рекомендует использовать DNS. если машина, к которой вы обращаетесь, подключена к другому домену, вы должны указать ее как «ip dnsname» в файле hosts в каталоге «C:\Windows\System32\drivers\etc».

person Sevban Bayrak    schedule 06.08.2019

использование adlink является строковым доменом, потому что метод AD вызывается с использованием доменного имени: «abc.com»

person VnDevil    schedule 27.06.2018