In un'ottica di "globalizzazione" delle password (parlo a livello aziendale) a volte può essere comodo usare le stesse credenziali, sia per accedere al computer che per accedere ai vari programmi gestionali fatti in casa (sempre se si dispone di un programmatore all'interno dell'azienda).
Se il sistema lavora con un database (SQL o Access o Oracle) si può inserire una tabella specifica con dentro tutte le persone che possono accedere al programma....con relativa user e password di accesso. Analizziamo pro e contro:
PRO:
- si definisce in modo certo, chi può accedere al programma e chi no
CONTRO:
- l'utenza si può reperire con una certa facilità....certo bisogna conoscere SQL e EM, però diciamo che non è così complicatissimo....
- se le password di accesso al computer cambiano, bisogna cambiare tutto all'interno del DB; e se abbiamo inseriti tanti utenti? e se abbiamo più programmi e quindi più database? certo si potrebbe creare una certa scalabilità, facendo un database che racchiude le credenziali di accesso....ma poi bisognerebbe attuare una procedura di backup....insomma una perdita di tempo.
allora si può procedere in maniera diversa....si attua l'autenticazione tramite Active Directory...
PRO:
sicuramente più "sicuro" nell'ottica del reperimento delle credenziali
non richiede troppe modifiche quando cambiano le password
in caso di inserimento di un nuovo utente non bisogna fare niente
CONTRO:
non si può più definire chi può accedere al programma e chi no....salvo controlli a monte....certo che se il programma è installato su una serie di pc "mirati" si è già fatto un primo "filtro"....e poi chi glielo va a dire che l'autenticazione è fatta con AD?
poi si può aprire una discussione sull'utilità o meno di questa cosa....io mi limito ad inserire il codice di come si fa....poi siete liberi di usarlo o meno...
Procedura: caricate la referenza: System.DirectoryServices
nella schermata di login, inserite questo codice:
Imports System.DirectoryServices (importiamo la dll caricata)
Dim User as string
Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
Dim Risposta As String = ValidateActiveDirectoryLogin("NOMEDOMINIO", UsernameTextBox.Text, PasswordTextBox.Text).ToString
If Risposta = True Then
Messagebox.show("Benvenuto: " & User)
Me.Close()
Else
Messagebox.show("Accesso negato, utente non in AD")
End If
End Sub
Private Function ValidateActiveDirectoryLogin(ByVal Domain As String, ByVal Username As String, ByVal Password As String) As Boolean
Dim Success As Boolean = False
Dim Entry As New DirectoryEntry("LDAP://" & Domain, Username, Password)
Dim Searcher As New System.DirectoryServices.DirectorySearcher(Entry)
Searcher.Filter = "sAMAccountName=" & Username
Searcher.PropertiesToLoad.Add("DisplayName")
Searcher.PropertiesToLoad.Add("description")
Try
Dim Results As System.DirectoryServices.SearchResult = Searcher.FindOne
Success = Not (Results Is Nothing)
User = Results.Properties("DisplayName")(0).ToString
Catch
Success = False
End Try
Return Success
End Function
facile no?....
S