Configurez ASP.NET MVC pour l’authentification contre AD

Quelles sont les étapes de haut niveau pour authentifier les utilisateurs d’une application ASP.NET MVC contre Active Directory?

Je présume quelque chose comme:

  1. Modifier web.config pour utiliser l’authentification Windows
  2. Configurez web.config pour utiliser ActiveDirectoryMembershipProvider
  3. Configurez le fichier web.config pour utiliser un RoleProvider personnalisé qui recherche dans AD

Est-ce que ce qui précède est judicieux et, dans l’affirmative, où placer la logique de détection d’utilisateur valide?

Dans mon cas, un utilisateur valide est une personne appartenant à un domaine AD spécifique.

Authentification par formulaire

Vous pouvez utiliser l’authentification par formulaires normale pour authentifier un utilisateur par rapport à un annuaire Active Directory, pour cela vous avez juste besoin de votre chaîne de connexion AD:

   

et ajoutez le fournisseur d’adhésion pour utiliser cette connexion:

      

Vous devrez utiliser le nom d’utilisateur @ domain pour authentifier correctement l’utilisateur.

Voici quelque chose pour commencer


Authentification Windows

Si vous commencez votre projet nouveau, vous pouvez toujours sélectionner l’ application Intranet à partir du modèle et tout est pris en charge pour vous.

entrer la description de l'image ici

Si vous voulez le faire manuellement, vous devez changer:

  1. Activer l’authentification Windows
  2. Désactiver l’authentification anonyme

pour des informations détaillées sur cette opération sur IIS7 / 8 et IISExpress:

IIS 7 et IIS 8

  1. Ouvrez le gestionnaire IIS et accédez à votre site Web.
  2. Dans Affichage des fonctionnalités, double-cliquez sur Authentification.
  3. Sur la page Authentification, sélectionnez l’authentification Windows. Si l’authentification Windows n’est pas une option, vous devez vous assurer que l’authentification Windows est installée sur le serveur.

    Pour activer l’authentification Windows sous Windows: a) Dans le Panneau de configuration, ouvrez “Programmes et fonctionnalités”. b) Sélectionnez “Activer ou désactiver des fonctionnalités Windows”. c) Accédez à Internet Information Services> Services World Wide Web> Sécurité et assurez-vous que le nœud d’authentification Windows est coché.

    Pour activer l’authentification Windows sur Windows Server: a) Dans le Gestionnaire de serveur, sélectionnez Serveur Web (IIS) et cliquez sur Ajouter des services de rôle. B) Accédez à Serveur Web> Sécurité et vérifiez que le nœud d’authentification Windows est activé.

  4. Dans le volet Actions, cliquez sur Activer pour utiliser l’authentification Windows.

  5. Sur la page Authentification, sélectionnez Authentification anonyme.
  6. Dans le volet Actions, cliquez sur Désactiver pour désactiver l’authentification anonyme.

IIS Express

  1. Cliquez avec le bouton droit sur le projet dans Visual Studio et sélectionnez Utiliser IIS Express.
  2. Cliquez sur votre projet dans l’Explorateur de solutions pour sélectionner le projet.
  3. Si le volet Propriétés n’est pas ouvert, ouvrez-le (F4).
  4. Dans le volet Propriétés de votre projet: a) Définissez “Authentification anonyme” sur “Désactivé”. b) Définissez “Authentification Windows” sur “Activé”.

Dans votre web.config avoir quelque chose comme

       

et c’est tout!

Maintenant, quand vous voulez l’identité de l’utilisateur, appelez simplement

 @User.Identity.Name 

et cela vous montrera le Domain\Username comme pour moi:

entrer la description de l'image ici

Voici quelque chose pour commencer

Ceci est un article de blog décrivant comment utiliser le cookie d’authentification OWIN avec Active Directory dans une solution ASP.NET MVC 5.

Article de blog: 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

Voici une solution du tutoriel Chris Schiffhauer – Implémenter l’authentification Active Directory dans ASP.NET MVC 5 :

Vous pouvez sécuriser votre application Web MVC sur un réseau Active Directory en authentifiant les utilisateurs directement par rapport à leurs informations d’identification de domaine.

ÉTAPE 1: ACCOUNTCONTROLLER.CS

Remplacez votre fichier AccountController.cs par ce qui suit:

 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, ssortingng 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(ssortingng.Empty, "The user name or password provided is incorrect."); return this.View(model); } public ActionResult LogOff() { FormsAuthentication.SignOut(); return this.RedirectToAction("Index", "Home"); } } 

ÉTAPE 2: MODELES DE VUE DE COMPTES.CS

Mettez à jour votre AccountViewModels.cs (ou quelle que soit la classe de votre modèle de compte) pour ne contenir que cette classe LoginModel:

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

ÉTAPE 3: WEB.CONFIG

Enfin, mettez à jour votre fichier Web.config pour inclure ces éléments.

                  

Pour obtenir votre chaîne de connexion LDAP, quelques étapes peuvent être nécessaires:

  1. Installer les outils d’administration de serveur distant pour Windows 7. Assurez-vous de suivre les instructions de post-installation pour append la fonctionnalité à Windows via le panneau de commande.

  2. Ouvrez une invite de commande et entrez >dsquery server

    Disons que la commande renvoie les éléments suivants:

     CN=PRIMARY,CN=Servers,CN=DefaultFirstName,CN=Sites,CN=Configuration,DC=MyDomain,DC=Local 
    • Le nom du serveur est composé de la première valeur CN et des deux dernières valeurs DC, séparées par des points. Donc c’est primary.mydomain.local .

    • Le port est 389.

    • La partie de la chaîne de connexion après le port et la barre oblique est la partie du résultat commençant par le premier "DC" . Donc, c’est DC=MyDomain,DC=Local .

    • Donc, la chaîne de connexion complète est

       LDAP://primary.mydomain.local:389/DC=MyDomain,DC=Local. 
    • Les utilisateurs se connecteront en utilisant uniquement leur nom d’utilisateur sans le domaine. Donc, le nom d’utilisateur correct est Chris, pas MYDOMAIN \ Chris.