2009-04-22 9 views
0

J'aimerais disposer d'une classe C# qui s'authentifie à partir d'Active Directory.Appel d'authentification générique à Active Directory en C#

Cela devrait être assez simple, il suffit de demander des informations d'identification et de vérifier si elles correspondent à ce que l'AD attend.

Je suis responsable d'un certain nombre d'applications C#, et je voudrais que toutes utilisent la même classe.

Quelqu'un pourrait-il fournir un échantillon de code propre d'une telle classe? Il devrait avoir une bonne gestion des erreurs, être bien commenté, et spécifiquement demander des informations d'identification plutôt que d'essayer de lire si un utilisateur est déjà connecté à AD pour une autre application. (Ceci est une exigence de sécurité car certaines applications sont utilisées dans des zones avec des ordinateurs partagés: Les personnes avec plusieurs rôles et différents niveaux d'autorisation peuvent utiliser le même ordinateur et oublier de se déconnecter entre les sessions)

Répondre

7

http://support.microsoft.com/kb/316748

public bool IsAuthenticated(String domain, String username, String pwd) 
{ 
    String domainAndUsername = domain + "\\" + username; 
    DirectoryEntry entry = new DirectoryEntry(_path, domainAndUsername, pwd); 

    try 
    { //Bind to the native AdsObject to force authentication.   
    Object obj = entry.NativeObject; 

    DirectorySearcher search = new DirectorySearcher(entry); 

    search.Filter = "(SAMAccountName=" + username + ")"; 
    search.PropertiesToLoad.Add("cn"); 
    SearchResult result = search.FindOne(); 

    if(null == result) 
    { 
     return false; 
    } 

    //Update the new path to the user in the directory. 
    _path = result.Path; 
    _filterAttribute = (String)result.Properties["cn"][0]; 
    } 
    catch (Exception ex) 
    { 
    throw new Exception("Error authenticating user. " + ex.Message); 
    } 

    return true; 
} 
1

Il y a une raison pour laquelle vous ne pouvez pas utiliser Windows integrated authentication, et ne pas déranger les utilisateurs avec la saisie de leurs noms et mots de passe? C'est en même temps la solution la plus utilisable et la plus sûre possible.

+1

Ceci est une exigence de sécurité parce que certaines applications sont utilisées dans des zones avec des ordinateurs partagés: Les personnes ayant des rôles multiples et différents niveaux d'autorisation peuvent utiliser le même ordinateur et oublier de se connecter entre les sessions –

Questions connexes