Настройка ASP.NET MVC для аутентификации против AD

Каковы шаги высокого уровня для аутентификации пользователей приложения ASP.NET MVC против Active Directory?

Я предполагаю что-то вроде:

  1. Измените web.config, чтобы использовать проверку подлинности Windows
  2. Настройте web.config для использования ActiveDirectoryMembershipProvider
  3. Настройте web.config для использования настраиваемого RoleProvider, который выглядит в AD

Означает ли это мнение разумным, и если да, то где я могу поместить правильную логику обнаружения пользователя?

В моем случае действительным пользователем является кто-то из определенного домена AD.

    Аутентификация форм

    Вы можете использовать обычную проверку подлинности для проверки подлинности пользователя в Active Directory, поскольку для этого вам нужна только строка подключения AD:

       

    и добавьте Поставщик членства для использования этого соединения:

          

    вам нужно будет использовать username @ domain для успешной аутентификации пользователя.

    Вот вам, чтобы вы начали


    Аутентификация Windows

    Если вы начинаете новый проект, вы всегда можете выбрать приложение «Интранет» из шаблона, и все позаботится о вас

    введите описание изображения здесь

    Если вы хотите сделать это вручную, вам необходимо изменить:

    1. Включить проверку подлинности Windows
    2. Отключить анонимную авторизацию

    для получения подробной информации об этом на IIS7 / 8 и IISExpress:

    IIS 7 и IIS 8

    1. Откройте диспетчер IIS и перейдите на свой веб-сайт.
    2. В представлении «Возможности» дважды щелкните «Аутентификация».
    3. На странице «Аутентификация» выберите «Проверка подлинности Windows». Если проверка подлинности Windows не является вариантом, вам необходимо убедиться, что на сервере установлена ​​проверка подлинности Windows.

      Чтобы включить проверку подлинности Windows в Windows: a) На панели управления откройте «Программы и функции». b) Выберите «Включить или отключить функции Windows». c) Перейдите в раздел «Информационные службы Интернета»> «Всемирные веб-службы»> «Безопасность» и убедитесь, что проверен узел проверки подлинности Windows.

      Чтобы включить проверку подлинности Windows на Windows Server: a) В диспетчере серверов выберите веб-сервер (IIS) и нажмите «Добавить службы ролей». B) Перейдите на веб-сервер> «Безопасность» и убедитесь, что установлен узел проверки подлинности Windows.

    4. На панели «Действия» нажмите «Включить», чтобы использовать проверку подлинности Windows.

    5. На странице «Аутентификация» выберите Анонимную аутентификацию.
    6. В области «Действия» нажмите «Отключить», чтобы отключить анонимную аутентификацию.

    IIS Express

    1. Щелкните правой кнопкой мыши проект в Visual Studio и выберите «Использовать IIS Express».
    2. Нажмите проект в обозревателе решений, чтобы выбрать проект.
    3. Если панель «Свойства» не открыта, откройте ее (F4).
    4. На панели «Свойства» для вашего проекта: a) Установите «Анонимная аутентификация» на «Отключено». b) Установите для параметра «Аутентификация Windows» значение «Включено».

    В вашем web.config есть что-то вроде

           

    вот и все!

    Теперь, когда вам нужна идентификация пользователя, просто позвоните

     @User.Identity.Name 

    и это покажет вам Domain\Username как для меня:

    введите описание изображения здесь

    Вот вам, чтобы вы начали

    Это сообщение в блоге, в котором описано, как использовать cookie аутентификации OWIN вместе с Active Directory в решении ASP.NET MVC 5.

    Сообщение в блоге: http://tech.trailmax.info/2016/03/using-owin-and-active-directory-to-authenticate-users-in-asp-net-mvc-5-application/

    Github: https://github.com/trailmax/OwinADAuthentication

    Вот решение из учебника Chris Schiffhauer – Внедрение аутентификации Active Directory в ASP.NET MVC 5 :

    Вы можете защитить свое веб-приложение MVC от сети Active Directory, аутентифицировав пользователей напрямую с их учетными данными домена.

    ШАГ 1: ACCOUNTCONTROLLER.CS

    Замените файл AccountController.cs следующим образом:

     using System.Web.Mvc; using System.Web.Security; using MvcApplication.Models; public class AccountController : Controller { public ActionResult Login() { return this.View(); } [HttpPost] public ActionResult Login(LoginModel model, string returnUrl) { if (!this.ModelState.IsValid) { return this.View(model); } if (Membership.ValidateUser(model.UserName, model.Password)) { FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe); if (this.Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\")) { return this.Redirect(returnUrl); } return this.RedirectToAction("Index", "Home"); } this.ModelState.AddModelError(string.Empty, "The user name or password provided is incorrect."); return this.View(model); } public ActionResult LogOff() { FormsAuthentication.SignOut(); return this.RedirectToAction("Index", "Home"); } } 

    ШАГ 2: ACCOUNTVIEWMODELS.CS

    Обновите свой AccountViewModels.cs (или независимо от вашего classа модели учетной записи), чтобы содержать только этот class LoginModel:

     using System.ComponentModel.DataAnnotations; public class LoginModel { [Required] [Display(Name = "User name")] public string UserName { get; set; } [Required] [DataType(DataType.Password)] [Display(Name = "Password")] public string Password { get; set; } [Display(Name = "Remember me?")] public bool RememberMe { get; set; } } 

    ШАГ 3: WEB.CONFIG

    Наконец, обновите файл Web.config чтобы включить эти элементы.

                      

    Для получения строки подключения LDAP может потребоваться несколько шагов:

    1. Установите средства администрирования удаленного сервера для Windows 7. Обязательно следуйте инструкциям после установки, чтобы добавить эту функцию в Windows через панель управления.

    2. Откройте командную строку и введите >dsquery server

      Скажем, команда возвращает следующее:

       CN=PRIMARY,CN=Servers,CN=DefaultFirstName,CN=Sites,CN=Configuration,DC=MyDomain,DC=Local 
      • Имя сервера состоит из первого значения CN и двух последних значений постоянного тока, разделенных точками. Так что это primary.mydomain.local .

      • Порт – 389.

      • Часть строки соединения после порта и косой черты – это часть результата, начинающегося с первого "DC" . Так что это DC=MyDomain,DC=Local .

      • Таким образом, полная строка соединения

         LDAP://primary.mydomain.local:389/DC=MyDomain,DC=Local. 
      • Пользователи будут входить в систему, используя только свое имя пользователя без домена. Итак, правильным именем пользователя является Крис, а не MYDOMAIN \ Chris.

    Interesting Posts

    Отладчик Visual Studio – отображение целочисленных значений в шестнадцатеричном виде

    Можно ли вручную добавить веб-страницу миниатюр на главную страницу Chrome?

    Что означает один амперсанд после списка параметров объявления функции-члена?

    Как использовать точный путь в диалоговом окне открытия файла Mac OS X?

    Подайте жесткий диск ПК в качестве запоминающего устройства USB

    Могу ли я сделать apt-get всегда использовать –no-install-рекомендует?

    Как я могу обслуживать https и http для Jetty из одного порта?

    Использование селектора last-child

    Как получить подписчиков мероприятия?

    Как интегрировать библиотеку кодов Matlab с Android?

    Windows 64-разрядный реестр против 32-разрядного реестра

    Мое приложение не может открыть ресурс ServletContext

    Как вы отслеживаете, какие пакеты были установлены на Ubuntu (Linux)?

    Быстрая и надежная наблюдаемая коллекция

    Могу ли я использовать Aero-привязку к верхнему / нижнему, а не влево / вправо при использовании режима портретного отображения для монитора?

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