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