ASP.NET MVC – аутентифицировать пользователей в Active Directory, но требует ввода имени пользователя и пароля

Я разрабатываю приложение MVC3, которое потребует от пользователя аутентификации против AD. Я знаю, что в MVC3 есть возможность создать приложение Intranet, которое автоматически аутентифицирует пользователя против AD, но использует Windows Authentication и автоматически регистрирует их. Это приложение может быть доступно на рабочих станциях «Открыть», где пользователю необходимо будет ввести свое имя пользователя и пароль. Любые примеры или онлайн-учебник были бы замечательными. Примерный проект был бы исключительным.

Вы можете использовать стандартный шаблон интернет-приложения с проверкой подлинности форм и вставить ActiveDirectoryMembershipProvider в web.config :

               

Таким образом вы получаете форму входа в шаблон интернет-приложения, и она проверяет наличие AD.

Тогда это просто вопрос очистки AccountController для удаления пароля сброса пароля / изменения пароля / регистрации, оставив только вход в систему.

Как упоминалось выше, вы можете использовать поставщик членства, определенный в файле web.config.

Код, приведенный ниже, входит в реализацию «AccountController» из шаблона шаблона MVC 3 и был слегка изменен для работы с ActiveDirectory:

  [HttpPost] public ActionResult LogOn( LogOnModel model, string returnUrl ) { if( ModelState.IsValid ) { // Note: ValidateUser() performs the auth check against ActiveDirectory // but make sure to not include the Domain Name in the User Name // and make sure you don't have the option set to use Email Usernames. if( MembershipService.ValidateUser( model.UserName, model.Password ) ) { // Replace next line with logic to create FormsAuthenticationTicket // to encrypt and return in an Http Auth Cookie or Session Cookie // depending on the 'Remember Me' option. //FormsService.SignIn( model.UserName, model.RememberMe ); // Fix this to also check for other combinations/possibilities if (!String.IsNullOrEmpty(returnUrl)) { return Redirect(returnUrl); } else { return RedirectToAction("Index", "Home"); } } else { ModelState.AddModelError("", "The user name or password provided is incorrect."); } } 

Если вы используете .NET 3.5, прочитайте эту статью для альтернативы:

Давайте будем гением компьютера.