Usuário com melhor resposta
Pesquisa LDAP fora do DC

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!
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.ReadLineinFile.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 CommentobjCommand.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
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 -
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
-
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.ReadLineinFile.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 CommentobjCommand.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