Я пытаюсь реализовать приложение, которое аутентифицирует пользователей по активному каталогу с использованием LDAP.
Я искал по всему Интернету, чтобы найти выход через это, но я не мог. Это то, что я пробовал, и я не знаю, почему SearchResult user = userSearcher.FindOne () возвращает Null? Что я делаю неправильно?
Я попытался посмотреть LINK , но аутентификация пользователей LDAP не задействована.
Метод:
public ELdapState Authenticate(string domain, string username, string pwd)
{
string domainAndUsername = $"{domain}\\{username}";
try
{
using (this._entry = new DirectoryEntry(this._path))
{
this.State = ELdapState.NotAuthenticated;
using (DirectorySearcher userSearcher = new DirectorySearcher(this._entry,
$"(&(objectCategory=Person)(objectClass=user)(mail=*)(sAMAccountName={username}))"))
{
userSearcher.PropertiesToLoad.Add("cn");
userSearcher.PropertiesToLoad.Add("sn");
userSearcher.PropertiesToLoad.Add("title");
userSearcher.PropertiesToLoad.Add("description");
userSearcher.PropertiesToLoad.Add("givenDame");
userSearcher.PropertiesToLoad.Add("mail");
userSearcher.PropertiesToLoad.Add("company");
userSearcher.PropertiesToLoad.Add("mobile");
userSearcher.PropertiesToLoad.Add("accountExpires");
userSearcher.PropertiesToLoad.Add("memberOf");
SearchResult user = userSearcher.FindOne();
if (user == null)
{
this.State = ELdapState.AccountNotFound;
}
}
}
}
}
Действие:
[HttpPost]
[AllowAnonymous]
//[ValidateAntiForgeryToken]
public ActionResult Login(LoginViewModel model, string returnUrl)
{
if (!Request.IsAuthenticated)
{
if (ModelState.IsValid)
{
Ldap nclss = new Ldap(returnUrl);
if (nclss.Authenticate(model.Domain, model.Email, model.Password) != 0)
{
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Dashboard");
}
}
else
{
ModelState.AddModelError("", "The Email Address or password provided is incorrect.");
}
}
}
return View();
}
Вид:
@using (Html.BeginForm("Login", "Login", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<div class="p-t-31 p-b-9">
<span class="txt1">
Username
</span>
</div>
<div class="wrap-input100 validate-input" data-validate="Username is required">
@Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control input100" } })
@Html.ValidationMessageFor(model => model.Email)
<span class="focus-input100"></span>
</div>
<div class="wrap-input100 validate-input" data-validate="Username is required">
@Html.EditorFor(model => model.Password, new { htmlAttributes = new { @class = "form-control input100" } })
@Html.ValidationMessageFor(model => model.Password)
<span class="focus-input100"></span>
</div>
<div class="container-login100-form-btn m-t-17">
<button class="login100-form-btn" type="submit">
Sign In
</button>
</div>
}
Я застрял здесь. Любая помощь будет оценена!