none
Pesquisa LDAP fora do DC RRS feed

  • Pergunta

  • Olá a todos!

    Estou precisando criar uma pesquisa LDAP para um sistema WEB buscar uma informação no meu DC (W2k3)...
    Esse sistema em Java está em um Apache, na mesma subrede do meu DC.

    Estou precisando fazer o seguinte:

    Retornar o login do usuário (atributo samAccountName do user no AD), a partir de uma busca comparando o campo "matrícula" no meu sistema com o atributo phisicalDeliveryOfficeName do user do AD, que está preenchido o número de matrícula do colaborador.

    Fico no aguardo.


    Obrigado!

     

    quarta-feira, 8 de outubro de 2008 19:23

Respostas

  •  

    Olá pessoal!

     

    Consegui fazer um vbs que faz o que preciso. Segue abaixo o código, caso alguém precise:

    Detalhes:

    O meu programa web vai gerar um arquivo texto "input.txt" contendo a matricula do colaborador. O script lê esse arquivo e retorna a resposta da pesquisa em outro arquivo texto "output.txt". Aí, o programa web vai buscar esse arquivo com a informacao do login do colaborador!!!!!!

     

    On Error Resume Next

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set outFile = fso.CreateTextFile("output.txt", True)
    set inFile = fso.opentextfile("input.txt")

    'Alocar valor de arquivo de entrada na variável matr e fechar o arquivo
    matr = inFile.ReadLine

    inFile.Close
    'End Comment

    'Conectar-se ao Active Directory
    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =   CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection
    'End Comment

    objCommand.Properties("Page Size") = 1000

    'Procura pelo objeto cujo physicalDeliveryOfficeName é igual ao valor
    'do arquivo de entrada e retornar o saMAccountName
    objCommand.CommandText = _
        "<LDAP://dc=int,dc=empresa,dc=com,dc=br>;(&(objectCategory=User)" & _
            "(physicalDeliveryOfficeName=" & matr & "));saMAccountName;Subtree" 
    Set objRecordSet = objCommand.Execute
    objRecordSet.MoveFirst
    'End Comment

    'Enquanto não for o final da busca no AD, escrever no arquivo de saída
    'os valores retornados
    Do Until objRecordSet.EOF
        outFile.WriteLine(objRecordSet.Fields("saMAccountName").Value)
        objRecordSet.MoveNext
    Loop

     

    quarta-feira, 22 de outubro de 2008 14:00

Todas as Respostas

  • Se funcionar posta aê pra gente!

    http://java.sun.com/products/jndi/tutorial/ldap/index.html
    http://java.sun.com/products/jndi/tutorial/ldap/misc/url.html

     LDAP Programming in Java Made Simple
    http://today.java.net/pub/a/today/2006/04/18/ldaptemplate-java-ldap-made-simple.html

    Using LDAP from Java+Tomcat and Python+Zope
    http://www.guug.de/veranstaltungen/ffg2003/papers/ffg2003-blasum-en.pdf
    quinta-feira, 9 de outubro de 2008 13:20
  • Olá!

     

    Obrigado pela ajuda, mas essas classes prontas que estão nos links que você me passou são para rede Novell. Será que funciona na rede microsoft também?

    Utilizo um servidor Windows 2003 Server Enterprise Edition SP2.

     

    Fico no aguardo!

     

    Att

     

    quinta-feira, 9 de outubro de 2008 16:20
  •  

    Olá pessoal!

     

    Consegui fazer um vbs que faz o que preciso. Segue abaixo o código, caso alguém precise:

    Detalhes:

    O meu programa web vai gerar um arquivo texto "input.txt" contendo a matricula do colaborador. O script lê esse arquivo e retorna a resposta da pesquisa em outro arquivo texto "output.txt". Aí, o programa web vai buscar esse arquivo com a informacao do login do colaborador!!!!!!

     

    On Error Resume Next

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set outFile = fso.CreateTextFile("output.txt", True)
    set inFile = fso.opentextfile("input.txt")

    'Alocar valor de arquivo de entrada na variável matr e fechar o arquivo
    matr = inFile.ReadLine

    inFile.Close
    'End Comment

    'Conectar-se ao Active Directory
    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =   CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection
    'End Comment

    objCommand.Properties("Page Size") = 1000

    'Procura pelo objeto cujo physicalDeliveryOfficeName é igual ao valor
    'do arquivo de entrada e retornar o saMAccountName
    objCommand.CommandText = _
        "<LDAP://dc=int,dc=empresa,dc=com,dc=br>;(&(objectCategory=User)" & _
            "(physicalDeliveryOfficeName=" & matr & "));saMAccountName;Subtree" 
    Set objRecordSet = objCommand.Execute
    objRecordSet.MoveFirst
    'End Comment

    'Enquanto não for o final da busca no AD, escrever no arquivo de saída
    'os valores retornados
    Do Until objRecordSet.EOF
        outFile.WriteLine(objRecordSet.Fields("saMAccountName").Value)
        objRecordSet.MoveNext
    Loop

     

    quarta-feira, 22 de outubro de 2008 14:00