Authentification LDAP dans ASP.Net MVC

Je souhaite pouvoir authentifier un utilisateur à l’aide de son domaine ID utilisateur et mot de passe, mais l’application ASP.Net MVC par défaut permet à l’utilisateur d’enregistrer un ID utilisateur et un mot de passe, puis de se connecter. Comment puis-je procéder?

Je ne veux pas que l’utilisateur puisse s’inscrire; Cependant, il devrait pouvoir entrer son ID utilisateur et son mot de passe de domaine Windows et être authentifié par le serveur de domaine.

Les solutions que j’ai vues (par exemple ici sur le blog de Mike ) ne nécessitent pas que l’utilisateur entre son identifiant utilisateur ou son mot de passe.

Comment puis-je obtenir mon application ASP.Net MVC pour afficher un formulaire de connexion et authentifier l’utilisateur sur le domaine Windows?

S’il vous plaît expliquer avec un échantillon si possible

Voici comment procéder dans l’authentification des formulaires d’applications Web. Il peut donc être nécessaire de l’adapter à MVC. Utilisez le moteur d’adhésion et de rôles asp.net. Configurez le fournisseur pour qu’il utilise le fournisseur d’appartenance Active Directory ET UTILISEZ ÉGALEMENT des formulaires pour l’authentification.

   

ou quelque chose comme ça ….

La configuration du fournisseur ressemblera à ceci:

      

La protection de la connexion, le nom d’utilisateur et le mot de passe sont destinés au compte ayant le droit d’interroger AD pour le compte du système. En fonction de la sécurité de votre réseau, il se peut que vous deviez le configurer ou vous ne pourrez pas interroger AD pour authentifier l’utilisateur.

Votre chaîne de connexion ressemblera à quelque chose comme:

    

La chaîne de connexion peut prendre de nombreuses formes. Vous devrez donc peut-être effectuer des recherches pour votre environnement.

Pour la page de connexion, vous devrez peut-être exécuter la méthode d’authentification et tester …

  e.Authenticated = Membership.ValidateUser(username, password); if (e.Authenticated == false)... 

Le livre de Stephen Shackow intitulé “Sécurité, adhésion et gestion des rôles professionnels ASP.Net 2.0” décrit bien l’utilisation de l’appartenance à AD (chapitre 12). Ce n’est pas dans le contexte de MVC mais la configuration et l’installation seraient les mêmes.

merci de m’indiquer la bonne direction, c’est ce que j’ai fini par faire

     public bool ValidateUser(ssortingng userName, ssortingng password) { bool validation; try { LdapConnection ldc = new LdapConnection(new LdapDirectoryIdentifier((ssortingng)null, false, false)); NetworkCredential nc = new NetworkCredential(userName, password, "DOMAIN NAME HERE"); ldc.Credential = nc; ldc.AuthType = AuthType.Negotiate; ldc.Bind(nc); // user has authenticated at this point, as the credentials were used to login to the dc. validation = true; } catch (LdapException) { validation = false; } return validation; } 

Je n’aime pas le fait que j’utilise la capture du bloc try pour déterminer si la validation des utilisateurs a réussi, mais je ne pouvais pas trouver d’autre solution.

Je pense que vous comprenez mal la publication de blog que vous avez mentionnée. L’ID utilisateur et le mot de passe fournis dans le fichier web.config sont ceux utilisés par ActiveDirectoryMembershipProvider pour se connecter à AD, et non ceux fournis par l’utilisateur. Ce qu’il dit, c’est essentiellement remplacer le fournisseur d’appartenance SQL par un fournisseur d’appartenance AD ​​et utiliser le code tel qu’il a été écrit pour le faire fonctionner avec AD. C’est exactement ce que vous devez faire. Si vous ne souhaitez pas utiliser le code du fournisseur d’appartenance, vous pouvez utiliser la méthode PrincipalContext.ValidateCredentials sur un contexte principal pour le domaine d’intérêt afin de valider les informations d’identification transmises à la méthode Login.

 using (PrincipalContext context = new PrincipalContext( ContextType.Domain, "domain" )) { if (context.ValidateCredentials( username, password)) { // log them in } else { // set up error message and rerender view } } 

LdapConnection est membre de l’espace de noms System.DirectoryServices.Protocols (et vous devez append la bibliothèque System.DirectoryServices.Protocols à vos références).

Je ne pouvais pas trouver System.Web.Security.ActiveDirectoryMembershipProvider.dll où trouver? aussi je recherche dans memebership & j’ai trouvé cela