2010-11-08 20 views
5

Uno dei nuovi requisiti per l'applicazione database è sincronizzare i contenuti della tabella utente con gli utenti in Active Directory. Quindi in pratica ho bisogno di connettermi al server di Active Directory e recuperare un elenco di nomi utente, all'interno di una procedura di plsql.Ottieni l'elenco utenti LDAP utilizzando PLSQL

Quello che ho raggiunto finora è connettersi al server di directory attivo, utilizzando le mie credenziali personali e interrogare alcuni attributi.

Esempio:

ldap_password := '****'; 
ldap_user  := 'cn=me,OU=Users,OU=mygroup,DC=mytown,DC=mycompany,DC=com'; 
ldap_base  := 'OU=Users,OU=mygroup,DC=mytown,DC=mycompany,DC=com'; 
search_filter := '(&(objectClass=Person)!((sn=him)(cn=me)))'; 
res_attrs(1) := 'displayName'; 
res_attrs(2) := 'cn'; 
res_attrs(3) := 'telephoneNumber'; 

Sembra posso interrogare solo i miei attributi o qualcun altro è se so già chi che qualcun altro è.

  • Come si ottiene un elenco di nomi utente?
  • È possibile utilizzare qualsiasi account o richiede un account con i privilegi appropriati?

risposta

3

Rene, È possibile eseguire tutte le ricerche in Active Directory tramite i componenti Oracle LDAP che sembra siano stati già toccati. Anche se non sono un esperto di LDAP/AD, credo che potresti avere bisogno di diritti per eseguire queste azioni o meglio ancora ottenere un ID/password creata che abbia i diritti (in questo modo puoi tenere il tuo id/psw fuori dal sistema e consentire o un pswrd o pswrd non ottimizzato supportato dagli amministratori di AD. So che ho sempre avuto accesso completo alle query su AD, non sono sicuro se è così che sono impostato o funzionalità predefinite

Ma guarda @ questo sito http://www.oracle-base.com/articles/9i/LDAPFromPLSQL9i.php

come l'articolo viene illustrato, consiglio paring indietro il vostro SearchFilter (ottenere più di tagliuzzare il basso fino a quando non si adatta alle vostre esigenze)

  • l_attrs (1): = '*'; - recuperare tutti gli attributi l_retval: = DBMS_LDAP.search_s (LD => l_session, base => l_ldap_base, scope => DBMS_LDAP.SCOPE_SUBTREE, filter => 'objectclass = *', attrs => l_attrs, attronly => 0, res => l_message);
+0

Grazie, ho già visto questi esempi. La mia domanda non riguarda come ottenere alcuni valori da un server LDAP in generale, ma come creare una query per ottenere un elenco di utenti (se possibile) – Rene

1

Active Directory ha circa 4 attributi di denominazione.

  • sAMAccountName (alias nome Pre-Windows2000) è un nome breve di 20 caratteri che deve essere univoco all'interno di ciascun dominio.
  • userPrinicipalName, solitamente [email protected], ma risulta che AD rispetterà quasi tutte le stringhe. (So ​​che questo sperimentalmente come una volta RESET 2000 di 6000 tali valori in un dominio AD in esecuzione.
  • displayName, quella che si presenta in ADUC (dsa.msc, Active Directory Users e computer)
  • La CN= parte del DN. Usando ADUC, il CN è in genere il nome visualizzato.Tuttavia può anche essere tutto legale in un nome LDAP

Quindi, quale "nome" stai cercando?Fondamentalmente la query per uno di quegli attributi nell'elenco e vedere cosa ottieni.

Come per vedere altri oggetti, sì, sarebbe necessario un account con diritti sufficienti per vedere quegli attributi per gli utenti.

4

Ho ottenuto il mio script di lavoro. L'impostazione dell'ambito mi ha impedito di visualizzare tutti i dati. DBMS_LDAP.SCOPE_SUBTREE

Problemi correlati