DÚVIDA SIMPLES SOBRE AD

 Tópico anterior Próximo tópico Novo tópico

DÚVIDA SIMPLES SOBRE AD

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#485199 - 05/11/2018 11:46:35

MARCOS

Cadast. em:Dezembro/2003


Bom dia!
Tenho um projeto funcionando em .NET (VB.NET).
Me foi solicitado, que a autenticação que faço atualmente
no programa, utilize o AD (Active Directory) do Windows.
Pesquisei na internet, mas os exemplos me pareceram bem
confusos (Provavelmente, por nao conhecer bem redes).

Algum colega, pode me indicar algum código que realize
apenas 2 tarefas simples no AD:

1. Exibir a lista de usuários na rede
2. Permitir que o usuário entre com o nome e senha e  seja autenticado

Agradeço qualquer auxilio.




#485213 - 06/11/2018 09:50:21

KURTGU
SAO PAULO
Cadast. em:Dezembro/2010


Resposta escolhida #485216 - 06/11/2018 14:54:33

ALEVALE
JUNDIAI
Cadast. em:Março/2012


Última edição em 06/11/2018 14:56:23 por ALEVALE

Para validar credenciais uso essa função, basicamente para trabalhar com o AD você pode utilizar a classe DirectoryServices ela possui uma gama de funções do AD, não tem muito segredo

    Public Function LDAP_Validate_Credentials(ByVal Username As String, ByVal Password As String, ByVal Domain As String) As Boolean
        Try
            Dim Success As Boolean = False
            Dim Entry As New System.DirectoryServices.DirectoryEntry("LDAP://" + Domain, Username, Password)
            Entry.RefreshCache()
            Dim Searcher As New System.DirectoryServices.DirectorySearcher(Entry)
            Searcher.SearchScope = DirectoryServices.SearchScope.OneLevel
            Try
                Dim Results As System.DirectoryServices.SearchResult = Searcher.FindOne
                Success = Not (Results Is Nothing)
                Return Success

            Catch ex As Exception
                Success = False
            End Try

        Catch ex As Exception
            Return False
        End Try

    End Function


USUARIOS
    
    Public RootDSE As New DirectoryServices.DirectoryEntry("LDAP://RootDSE")
        Public DomainDistinguishedName As String = RootDSE.Properties("DefaultNamingContext").Value

          Public Function Populate_Users()
        Dim oRoot As DirectoryEntry = New DirectoryEntry("LDAP://RootDSE")
        Dim DomainDN As String = oRoot.Properties("DefaultNamingContext").Value
        Dim oSearcher As DirectorySearcher = New DirectorySearcher(DomainDN)
        Dim oResults As SearchResultCollection
        Dim oResult As SearchResult
        oSearcher.Sort.Direction = SortDirection.Ascending
        oSearcher.Sort.PropertyName = "displayName"
        oSearcher.Filter = "(&(objectCategory=person)(objectClass=user))"
        Dim AD_Users_array As New ArrayList

        Try
            oResults = oSearcher.FindAll

            For Each oResult In oResults
                If oResult.Properties.Contains("displayName") Then
                    AD_Users_array.Add(oResult.Properties("displayName")(0).ToString)
                End If
            Next

            Return AD_Users_array

        Catch e As Exception

        End Try

    End Function


Adaptei o 2 de um fonte meu não testei mas deve funcionar, você deve informar qual é a OU ou se passar o dominio inteiro acredito que ele filtre tudo.


---------------------------------------------------------------
"Já está provado por A+B que A+B num prova nada"
---------------------------------------------------------------

#485219 - 06/11/2018 15:49:39

MARCOS

Cadast. em:Dezembro/2003


Muito obrigado,pessoal!




 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por MARCOS em 06/11/2018 15:49:59