Workshop on Demand: LDAP-Grundlagen

Axel Beckert

Symlink.ch / ISG D-PHYS, ETH Zürich

abe@noone.org
http://noone.org/abe/

Übersicht

  • Was ist LDAP? Wo kommt LDAP her?
  • Implementationen
  • LDAP-Server abfragen
  • LDIF
  • LDAP-Schemata (OpenLDAP 2.x)
  • Links

Was ist LDAP? Wo kommt LDAP her?

  • Lightweight Directory Access Protocol
  • Was ist dann Heavyweight? X.500 Directory
  • Nur Protokoll, nicht Implementation
  • Baumstruktur, Attribute, Werte, Objektklassen
  • Verschiedene Äste des Namespaces auf verschiedenen Servern
  • Einsatzgebiete: Hierachische Datenbanken, z.B. Benutzerverwaltung, Personalverwaltung, Telefonbuch, Konfigurationsdatenbank, etc.

Implementation: Server

  • Freie LDAP-Server:
    • TinyLDAP (klein und flott / readonly)
    • OpenLDAP (bekannt, geliebt, gehasst / mächtig, div. Backends, skaliert nur tlw.)
    • Fedora Directory Server (ehemals Netscape Directory Server / fett, skaliert)
    • Samba LDAP (Alpha-Stadium / Fokus auf ADS-Replikation/-Ersatz)
  • Bekannte kommerzielle LDAP-Server:
    • Sun Directory Server
    • Microsoft Active Directory Service (ADS)

Implementation: Generische Clients

  • GQ
  • Luma
  • JXplorer
  • LDAP Browser
  • OpenLDAP LDAP Utilities (Kommandozeile)
  • ldapvi (Kommandozeile mit $EDITOR)
  • Diverse webbasierte Editoren: GOsa, phpldapadmin, phpmyldap

LDAP-Server abfragen

  • Wo Suchen?
    • Base-DN
    • Scope: base, children, sub
  • Filtern
    • Infix-Notation
    • keine Gänsefüßchen oder einfache Anführungszeichen
    • Quoting mit Backslash (\)
    • Leerzeichen am Beginn oder Ende müssen gequotet werden.
    • Wildcard *
    • Beispiel:
      (&(objectClass=person)(|(uid=abe*)(uid=bec*)))

LDIF

  • LDAP Data Interchange Format
  • Konzept
    • Simples "key: value"
    • Arrays durch multiples Vorkommen vom Keys
    • Non-ASCII-Values durch "key:: base64-codierter value"
    • Datensatz-Trennung durch Leerzeilen
  • Beispiel:
        dn: cn=Axel Beckert,ou=2007,o=CLT,c=de
        cn: Axel Beckert
        ou: 2007
        o: CLT
        gn: Axel
        sn: Beckert
        mail: abe@noone.org
        mail: abe@deuxchevaux.org
        telephonenumber: +41 44 633 4189
        roomnumber: HPR E 86.1
        login: abe
        uid: 1234

LDAP-Schemata (OpenLDAP 2.x)

attributetype ( 2.5.4.3 NAME ( 'cn' 'commonName' )
       DESC 'RFC2256: common name(s) for which the entity is known by'
       SUP name )

attributetype ( 2.5.4.4 NAME ( 'sn' 'surname' )
        DESC 'RFC2256: last (family) name(s) for which the entity is known by'
        SUP name )

attributetype ( 2.5.4.42 NAME ( 'givenName' 'gn' )
        DESC 'RFC2256: first name(s) for which the entity is known by'
        SUP name )

objectclass ( 2.5.6.6 NAME 'person'
        DESC 'RFC2256: a person'
        SUP top STRUCTURAL
        MUST ( sn $ cn )
        MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )
  

Links