У меня проблема с подключением LDAP в ASP. net MVC - PullRequest
0 голосов
/ 14 апреля 2020

У меня проблема с подключением LDAP. Я могу подключиться к своему серверу LDAP с помощью программ «Редактирование ADSI» и «LDAP ADMIN». но когда я пытаюсь отладить приложение, я получаю сообщение об ошибке

С указанным доменом или сервером невозможно связаться

Я получаю ошибку имени пользователя / пароля при записи неверный логин или пароль. Я попробовал каждое решение, предоставленное на inte rnet. но все же я не могу понять, в чем проблема.

Мой web.config файл:

<connectionStrings>
    <add name="ADConnectionString" 
         connectionString="LDAP://domainname:389/dc=domain,dc=local" />
</connectionStrings>
<location allowOverride="false" path="path"/>
    <system.web>
        <authentication mode="Forms">
            <forms loginUrl="~/Account/LogOn" timeout="2880" />
        </authentication>
        <membership defaultProvider="DomainLoginMembershipProvider">
            <providers>
                <add name="DomainLoginMembershipProvider"
                     type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                     connectionStringName="ADConnectionString"             
                     connectionUsername="domain\username"
                     connectionPassword="password"
                     attributeMapUsername="sAMAccountName" />
            </providers>
        </membership>  
    </system.web>
</location>

, а контроллер выглядит так:

public ActionResult LogOn(LogOnModel model ,string returnUrl)
{
        if(ModelState.IsValid)
        {
            if (Membership.Providers["DomainLoginMembershipProvider"].ValidateUser(model.Username, model.Password))
            {
                FormsAuthentication.SetAuthCookie(model.Username,model.RememberMe);

                if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
                {
                    return Redirect(returnUrl);
                }
                else
                {
                    return RedirectToAction("Index", "Home");
                }
            }
            else
            {
                ModelState.AddModelError("", "The user name or password provided is incorrect");
            }
        }

        return View(model);
    }   

Редактировать: Хорошо. Я наконец исправил проблему. Сначала я изменил файл «хост» для перенаправления «Доменное имя» на мой AD stati c IP. Тогда я использовал код ниже:

using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, 
       "Domain Name","DC=demo,DC=local", "administrator", "password"))
            {
             if (pc.ValidateCredentials(model.Username, model.Password)==true)
                {
                    FormsAuthentication.SetAuthCookie(model.Username, model.RememberMe);
                    if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
                    {
                        return Redirect(returnUrl);
                    }
                    else
                    {
                        return RedirectToAction("Index", "Home");
                    }
                }
                else
                {
                    ModelState.AddModelError("", "The user name or password provided is incorrect");
                }

           }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...