Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] Directorio activo y vb.net pasarle usuario y password

Estas en el tema de Directorio activo y vb.net pasarle usuario y password en el foro de .NET en Foros del Web. Hola; He conseguido que medio funcione lo del directorio activo en una aplicación web programada en vb.net, pero necesito que en la función ValidateUser, que ...
  #1 (permalink)  
Antiguo 08/01/2013, 02:17
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años, 1 mes
Puntos: 7
Exclamación Directorio activo y vb.net pasarle usuario y password

Hola;

He conseguido que medio funcione lo del directorio activo en una aplicación web programada en vb.net, pero necesito que en la función ValidateUser, que mostraré en el código de abajo, no solo me valide con el user si no que me valide con el user y con el pass. ¿Como puedo hacerlo?

Código vb.net:
Ver original
  1. Imports System.Text
  2. Imports System.Collections
  3. Imports System.Collections.Generic
  4. Imports System.DirectoryServices
  5. Imports System.DirectoryServices.ActiveDirectory
  6. Imports System.Security
  7. Imports System.Security.Permissions
  8.  
  9. Public Class Login
  10.     Inherits System.Web.UI.Page
  11.  
  12.     Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  13.         'RegisterHyperLink.NavigateUrl = "Register.aspx?ReturnUrl=" + HttpUtility.UrlEncode(Request.QueryString("ReturnUrl"))
  14.     End Sub
  15.  
  16.     Protected Sub LoginButton_Click(sender As Object, e As EventArgs) Handles LoginButton.Click
  17.         Dim usuario As String
  18.         Dim pass As String
  19.         Dim valido As Boolean
  20.         Dim nombre As String
  21.  
  22.         usuario = Me.UserName.Text
  23.         pass = Me.Password.Text
  24.  
  25.         If usuario = "" Or pass = "" Then
  26.  
  27.             errorLabel.Text = "*Introduzca los datos de acceso necesarios"
  28.         Else
  29.             GetDirectoryEntry(usuario, pass)
  30.             valido = IsValidADLogin(usuario, pass)
  31.  
  32.             If valido Then
  33.  
  34.                 ValidateUser(usuario, pass)
  35.                 nombre = FullName(usuario, pass)
  36.             Else
  37.                 Me.UserName.Text = ""
  38.                 Me.Password.Text = ""
  39.                 errorLabel.Text = "*Datos incorrectos. Vuelva a introducir los datos de acceso."
  40.             End If
  41.         End If
  42.     End Sub
  43.  
  44.     Public Shared Function GetDirectoryEntry(ByVal usuario As String, ByVal pass As String) As DirectoryEntry
  45.         'Of course change the information for the LDAP to your network
  46.         Dim dirEntry As New DirectoryEntry
  47.  
  48.         dirEntry.Path = ("LDAP://192.168.1.1/DC=dc,DC=dc")
  49.         dirEntry.AuthenticationType = AuthenticationTypes.Secure
  50.         dirEntry.Username = usuario
  51.         dirEntry.Password = pass
  52.  
  53.         Return dirEntry
  54.     End Function
  55.  
  56.     Public Shared Function ExtractUserName(ByVal path As String) As String
  57.         'Split on the "\"
  58.         Dim userPath As String() = path.Split(New Char() {"\"c})
  59.  
  60.         'Return the rest (username part)
  61.         Return userPath((userPath.Length - 1))
  62.     End Function
  63.  
  64.     Public Function IsValidADLogin(ByVal user As String, ByVal pass As String) As Boolean
  65.  
  66.         Try
  67.             'Create a DirectorySearcher Object (used for searching the AD)
  68.             Dim search As New DirectorySearcher()
  69.  
  70.             'Set the filter on the searcher object to look for the SAMAccountName, givenName and the sn (Sur Name)
  71.             search.Filter = "(sAMAccountName=" + user + ")"
  72.  
  73.             'Use the .FindOne() Method to stop as soon as a match is found
  74.             Dim result As SearchResult = search.FindOne()
  75.  
  76.             'Now check to see if a result was found
  77.             If result Is Nothing Then
  78.  
  79.                 'Login isn't valid
  80.                 Return False
  81.             Else
  82.  
  83.                 'Valid login
  84.                 Return True
  85.             End If
  86.         Catch ex As Exception
  87.             MsgBox("Active Directory Error" & Chr(13) & Chr(13) & ex.Message)
  88.         End Try
  89.     End Function
  90.  
  91.     Public Function [B]ValidateUser[/B](ByVal user As String, ByVal pass As String) As Boolean
  92.         Dim adsEntry As New DirectoryEntry("LDAP://192.168.1.1/DC=dc,DC=dc", user, pass)
  93.         Dim adsSearcher As New DirectorySearcher(adsEntry)
  94.  
  95.         [B]adsSearcher.Filter = "sAMAccountName=" + user + ")"[/B]
  96.         Dim bSucceded As Boolean = False
  97.  
  98.         Try
  99.             Dim adsSearchResult As SearchResult
  100.  
  101.             adsSearchResult = adsSearcher.FindOne()
  102.             bSucceded = True
  103.             adsEntry.Close()
  104.         Catch ex As Exception
  105.  
  106.             Dim strError As String = ex.Message
  107.             adsEntry.Close()
  108.         End Try
  109.         Return bSucceded
  110.     End Function
  111.  
  112.     Public Function FullName(ByVal user As String, ByVal pass As String) As String
  113.         'Dim dirEntry As New DirectoryEntry("LDAP://servername/DC=servername,DC=com", strDomain & "\" & user, pass)
  114.         Dim adsEntry As New DirectoryEntry("LDAP://192.168.1.108/DC=indar,DC=local", user, pass)
  115.         Dim deSearch As New DirectorySearcher(adsEntry)
  116.         Dim properties() As String = {"fullname"}
  117.         deSearch.SearchScope = SearchScope.Subtree
  118.         deSearch.ReferralChasing = ReferralChasingOption.All
  119.         deSearch.PropertiesToLoad.AddRange(properties)
  120.         deSearch.Filter = "sAMAccountName=" + user + ")"
  121.  
  122.         Dim result As SearchResult
  123.         result = deSearch.FindOne()
  124.         Dim directoryEntry As New DirectoryEntry
  125.         directoryEntry = result.GetDirectoryEntry()
  126.         Dim displayname As String
  127.         displayname = directoryEntry.Properties("displayname")(0).ToString()
  128.         Return displayname
  129.     End Function
  130. End Class

__________________
Gracias por todo;

Un saludo

Etiquetas: activo, directorio, net, password, server, vb, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:37.