Autentificacion por Active Directory ASP.NET
Código:
'Autenticar usuario en servidor de LDAP
Public Function autenticarUsuarioLDAP(
ByVal path As String,
ByVal dominioAs String,
ByVal usuario As String,
ByVal contrasena As String) As Boolean
Dim entry As DirectoryEntry =
New DirectoryEntry(path & dominio,
dominio & "\" & usuario,
contrasena)Try
'creamos un objeto nativo pra forzar la autenticación
Dim obj As Object = entry.NativeObject
Dim search As DirectorySearcher = New DirectorySearcher(entry)
search.Filter ="(SAMAccountName=" & usuario & ")"
search.PropertiesToLoad.Add("cn")
Dim result As SearchResult = search.FindOne()
If (result Is Nothing) Then
Return False
End If
'muestra el path del usuarioen el directorio
txtPathCompleto.Text = result.Path
txtAtributoFiltro.Text = CType(result.Properties("cn")(0), String)
Catch ex As Exception
Return False
MsgBox("Error al autenticarusuario: " & ex.Message,
MsgBoxStyle.Exclamation)
End Try
Return True
End Function
Un ejemplo de uso:
Código:
Private Sub btValidar_Click( ByVal sender As System.Object,ByVal e As System.EventArgs) Handles btValidar.Click
If autenticarUsuarioLDAP(txtPath.Text,
txtDominio.Text,
txtUsuario.Text,
txtContrasena.Text) = True Then
MsgBox("Usuario validadocorrectamente en dominio " &
txtDominio.Text, MsgBoxStyle.Information)
Else
MsgBox("Ha habido un error de autenticación, compruebe los datos.",
MsgBoxStyle.Exclamation)
End If
End SubTeniendo en cuenta que hay que añadir la siguiente línea de código al principio del formulario:
Código:
Imports System.DirectoryServices
En el ejemplo usamos txtDominio.Text,txtPath.Text, txtUsuario.Text, txtContrasena.Text que son cuadros de texto (TextBox) para el dominio en el que validaremos, el path (normalmente "LDAP://"), el usuario y la contraseña respectivamente.
Regístrate para leer el documento completo.