JNDI / LDAP Attribute eines Benutzers auslesen

vsk

Aktives Mitglied
Hallo

Ich komme gerade mit JNDI nicht weiter.
Vor Jahren habe ich mal etwas unter VB.net mit LDAP gemacht.

Dort habe ich eine gefilterte Suche laufen lassen und dann aus dem Ergebnis meine Attribute extrahiert.

Wie bekomme ich denn das mit JNDI hin?
(Verbinden und authentifizieren funktioniert daher auch das "authEnv")
(Wie man sieht hab ich das sun Beispiel genommen)
Java:
DirContext ctx = new InitialDirContext(authEnv);

	    // Create default search controls
	    //SearchControls ctls = new SearchControls();

            // Specify the ids of the attributes to return
            //String[] attrIDs = {"cn", "mail"};
            SearchControls ctls = new SearchControls();
            //ctls.setReturningAttributes(attrIDs);

	    // Specify the search filter to match
	    String filter = "(&(cn=BenutzerName)(mail=*))";
           NamingEnumeration answer = ctx.search("ou=People", filter, ctls);

Eignetlich sollten die Daten die ich will in "answer" stehen oder?
Java:
NamingEnumeration answer = ctx.search("ou=People", filter, ctls);
Aber das ist ein Objekt und ich kann nicht auf den Inhalt zugreifen, weil es mit keine Methden dafür anbietet.

Ich hab dann auch mal
Java:
 Attributes attr = ctx.getAttributes("ou=People, ou=Abteilung, cn=BenutzerName");
probiert, aber da stimmt wohl garnichts was ich eingegeben habe ;(

Hier
JNDI 1.2.1 Specification: Interface DirContext
blick ich nicht ganz durch was Name sein soll, ou=People oder ?!
 
konnte mich selbst lösen... ehm das problem

und damit auch andere was davon haben:

Java:
 DirContext ctx = new InitialDirContext(authEnv);
 // Create default search controls
 SearchControls sc = new SearchControls();
    String[] attributeFilter = { "cn", "mail" };
    sc.setReturningAttributes(attributeFilter);
    sc.setSearchScope(SearchControls.SUBTREE_SCOPE);

// Specify the search filter to match
String filter = "(&(cn=BenuterNameCommonName)(mail=*))"; //BenuterNameCommonName

String base2 = "ou=People,ou=Abteilung, dc=DistinguishedName, dc=de";

NamingEnumeration results = ctx.search(base2, filter, sc);
    while (results.hasMore()) {
      SearchResult sr = (SearchResult) results.next();
      Attributes attrs = sr.getAttributes();

      Attribute attr = attrs.get("cn");
      System.out.print(attr.get() + ": ");
      attr = attrs.get("mail");
      System.out.println(attr.get());
  }//while

            
	    ctx.close();
	} catch (Exception e) {
	    e.printStackTrace();
	}

Lasse das Thema mal offen, vielleicht hat ein Guru noch helfende Anmerkungen
 

Zurück
Oben