Mar 29

Apache Directory groovy-ldap

Verzeichnisdienste, die LDAP (Lightweight Directory Access Protocol) unterstützen, werden immer mehr für die Authentifizierung in Applikationen eingesetzt.

Wie einfach es ist, mit der Java basierten Scriptsprache Groovy einen LDAP Server abzufragen, zeigt das Apache Directory Projekt mit seiner Bibliothek groovy-ldap.

Nach dem Download und dem Auspacken der Zip Datei, brauch man nur noch das jar Archiv in den Klassenpfad aufnehmen und dann kann es auch schon losgehen. Hier ein kleines Beispiel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package de.koo.groovy.ldap
 
import org.apache.directory.groovyldap.LDAP
import org.apache.directory.groovyldap.SearchScope
 
public class LdapSearch{
  private LDAP conn;
 
  public LdapSearch () {
    conn =   LDAP.newInstance('ldap://ldap.uno.edu:389')
    assert (conn!=null)
    println("connected")
  }
 
  public void searchAny() {
    // alle Studenten
    try {
      conn.eachEntry (filter:'(sn=*)'
               ,base:'ou=Students,o=UNIVERSITY OF NEW ORLEANS,c=US') {student ->  
        println student.cn
      }    
    } catch (Exception e) {}
  }
 
  public void searchWithName(name) {
    def students=conn.search("(sn=${name})"
        ,'ou=Students,o=UNIVERSITY OF NEW ORLEANS,c=US'
        ,SearchScope.SUB)
    students.each {student ->        
      println student.cn
    }
  }
 
  public boolean isInLdap(dn) {
    // Existiert ein Eintrag
    return conn.exists(dn)
  }
 
  public void read(dn) {
    // Auslesen eines einzelnen Eintrags
    def student=conn.read(dn)
    println "${student.sn} (mail: ${student.mail})"
 
  }
 
  static void main(args) {
    LdapSearch ls=new LdapSearch()
    ls.searchAny()
    ls.searchWithName("Fu")
 
    def dn='cn=Erin Lee Sheehan,ou=Students,o=UNIVERSITY OF NEW ORLEANS,c=US'
    if (ls.isInLdap(dn)) ls.read(dn)
  }
}

Auf der Wiki Seite des Projekts und im Artikel von Groovy Zone befinden sich auch Beispiele zum Hinzufügen, Ändern und Löschen von LDAP Einträgen.
Eine Liste öffentlicher LDAP Server zum Testen gibt es auch.

Ähnliche Artikel:

geschrieben von gklinkmann \\ tags: , , ,

Mar 02

Das Lightweight Directory Access Protocol (LDAP) hat sich im Internet für die Authentifizierung von Benutzerdaten bewährt. LDAP bietet dafür einen sehr performanten Zugriff auf Directory Server (auch LDAP Server genannt), in denen Benutzerdaten hierarchisch abgelegt sind.

Um sich ein bißchen mehr mit dem Thema beschäftigen, muss man nicht gleich einen eigenen LDAP Server aufsetzen, sondern kann auf eine Reihe öffentlicher und freier LDAP Server zurückgreifen.

Eine gute Liste dafür ist die von eMailman. Eine einfache Abfrage mittels ldapsearch (Bestandteil von MacOs, unter Ubuntu muss das Paket ldap-utils installiert sein) könnte so aussehen:

> ldapsearch -h "ldap.uno.edu" -LLL -x \
             -b "ou=Students,o=UNIVERSITY OF NEW ORLEANS,c=US" \
             "(sn=Fu)" cn
dn: cn=Pik Yu Fu,ou=Students,o=University of New Orleans,c=US
cn: Pik Yu Fu
 
dn: cn=Yuanyuan Fu : yfu2,ou=Students,o=University of New Orleans,c=US
cn: Yuanyuan Fu : yfu2
 
dn: cn=Shiquan Fu,ou=Students,o=University of New Orleans,c=US
cn: Shiquan Fu

Diese Abfrage sucht im LDAP Server der Universität von New Orleans nach Studenten mit dem Nachnamen Fu. Hier noch eine kurze Erläuterung der Parameter:

-h
LDAP Server
-LLL
Ausgabeoptionen – Ein einfaches -L beschränkt die Ausgabe auf LDIFv1. Ein zweites -L unterdrückt Kommentare. Ein drittes -L unterdrückt die Ausgabe der LDIF Version.
-x
Benutzen der einfachen Authentifizierung ohne den Simple Authentication and Security Layer (SASL).
-b
Benutzt eine andere Suchbasis als Startpunkt für die Suche.
(sn=Fu)
Filter für die Suche nach dem Nachnamen
cn
Common Name – Attribut, das ausgegeben wird

Ähnliche Artikel:

geschrieben von gklinkmann \\ tags: , ,