J'ai juste un nom d'utilisateur et je n'ai pas de mot de passe. Je veux juste vérifier si ce nom d'utilisateur existe dans Active Directory. Comment je vais y aller?Authentification contre Active Directory en utilisant C#
Répondre
Vous pouvez utiliser la classe DirectoryEntry
pour de telles tâches. Voir la Exists
-method ici: http://msdn.microsoft.com/en-us/library/system.directoryservices.directoryentry.exists.aspx
Essayez ceci:
string strDomain = DOMAINNAME;
string strUserId = USERNAME;
string strPath = "LDAP://DC=" + strDomain.Trim() + ",DC=com";
DirectoryEntry de = new DirectoryEntry(strPath);
DirectorySearcher deSearch = new DirectorySearcher(de);
deSearch.Filter = "(&(objectClass=user)(SAMAccountName=" + strUserId.Trim() + "))";
SearchResult results = deSearch.FindOne();
if ((results == null))
{
//No User Found
}
else
{
//User Found
}
Je recommanderais d'utiliser objectCategory = person au lieu de objectClass. ObjectCategory a une seule valeur et est indexé, alors que objectClass n'est pas -> using objectCategory rend votre requête AD plus rapide –
@marc_s: On peut utiliser à la fois * objectCategory * et * objectClass * ou * objectClass * seulement en utilisant * objectCategory * seulement dans le filtre ne fonctionne pas dans .NET. –
Vous ne devez pas utiliser cette méthode, car elle tente également de * lire * les valeurs dans Active Directory, plutôt que de vérifier l'authentification. Vous pouvez avoir des informations d'identification valides, mais le code échouera car vous n'êtes pas autorisé à rechercher des utilisateurs. –
Si vous êtes sur .NET 3.5, vous pouvez utiliser les fonctions System.DirectoryServices.AccountManagement
. Votre code ressemblerait à quelque chose comme:
// create a "principal context" - e.g. your domain (could be machine, too)
PrincipalContext pc = new PrincipalContext(ContextType.Domain, "YOURDOMAIN");
UserPrincipal user = UserPrincipal.FindByIdentity(pc, "username");
bool userExists = (user != null);
Cela devrait faire l'affaire ;-)
Pour plus de détails sur S.DS.AM, voir cet excellent article MSDN:
Managing Directory Security Principals in the .NET Framework 3.5
- 1. Java SSO: Authentification Kerberos contre Active Directory
- 2. Authentification Active Directory
- 3. C# contre Active Directory sur LDAP
- 4. Authentification contre Active Directory/ISA à partir de php
- 5. Authentification LDAP avec Active Directory et SunOne
- 6. Authentification intranet Active Directory avec VB.NET
- 7. authentification silencieuse avec Tomcat et Active Directory
- 8. Authentification PHP Active Directory avec Kerberos
- 9. Authentification Windows, autorisations personnalisées, WCF, Active Directory
- 10. Authentification Active Directory sans fenêtre contextuelle
- 11. Authentification Active Directory sur WSS 3.0
- 12. Spring Security 2.0.6 Authentification avec Active Directory
- 13. Authentification MS Active Directory et non-membre
- 14. C# Bibliothèque Active Directory
- 15. C# Active Directory via WMI
- 16. Service Web Java SOAP sécurisé - Authentification Active Directory Trust
- 17. LDAP contre ADSI dans la manipulation des utilisateurs Active Directory
- 18. Trouver des serveurs utilisant Active Directory
- 19. authentification avec Active Forms Directory dans ASP.Net 2.0
- 20. authentification Active Directory dans ASP.Net - aide chaîne de connexion nécessaire
- 21. Active Directory
- 22. Active Directory - Django/Rails
- 23. API C++ à développer sur Active Directory
- 24. problème d'authentification Active Directory après Reconnect - C#
- 25. Active Directory dans VB.Net
- 26. Active Directory Filter memberof
- 27. Propriétés Active Directory
- 28. Hériter des autorisations Active Directory via C#
- 29. Asp.Net Authentification par rôle utilisant des groupes de sécurité dans Active Directory
- 30. lier Linux à Active Directory en utilisant kerberos
Vous devriez toujours ajouter la langue à la liste de balises;) – Scoregraphic