Как создать страницу входа для аутентификации пользователей LDAP в MVC 5 - PullRequest
0 голосов
/ 25 августа 2018

Я пытаюсь реализовать приложение, которое аутентифицирует пользователей по активному каталогу с использованием 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>

                        }

Я застрял здесь. Любая помощь будет оценена!

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