Quando sviluppiamo un’applicazione, può capitare di doversi accertare che l’utente sia effettivamente l’owner dell’account in uso. L’unico modo per fare ciò è richiedere le credenziali di accesso e controllare che siano valide.

In questo breve articolo vediamo come sia facile in C# controllare la validità di un nome utente e password, interrogando il servizio di accesso di Windows.

Importiamo gli Assembly

Per prima cosa, è necessario importare nel nostro progetto 2 assembly fondamentali:

  • System.Security.Principal;
  • System.DirectoryServices.AccountManagement;

Se la prima è normalmente già presente tra i riferimenti di un qualsiasi progetto .NET Framework, per la seconda è necessario aprire la finestra di Gestione riferimenti e, dopo aver selezionato l’assembly, premere OK.

La Soluzione

Importati gli assembly, è già ora di presentare il codice.
Partiamo col richiamare tutti i riferimenti corretti:

Copy to Clipboard

A questo punto, possiamo richiamare il codice che fa il lavoro sporco:

Copy to Clipboard

Conclusioni

Come avrai potuto notare, per specificare il nome utente corretto ho fatto uso della classe nativa WindowsIdentity che recupera le informazioni esatte riguardanti dominio e username. In questo modo siamo certi che il primo parametro passato al metodo ValidateCredentials si riferisca esattamente all’utente che sta eseguendo l’applicativo.