Auf Benutzerrepositorys zugreifen

Sie können verschiedene Repositorytypen verwenden, wie beispielsweise LDAP-Verzeichnisse, relationale Datenbanken und unstrukturierte Dateien mit JEE- oder angepasster Sicherheit. Sie können Single Sign-on von EGL verwenden, um auf verschiedene Repositorys zuzugreifen und sie für die Anwendung, den Proxy und für Web-Services zu authentifizieren. Damit das Single Sign-on erfolgreich ist, müssen die Benutzer-ID und das zugehörige Kennwort, die der Endbenutzer in die Anmeldeanzeige eingibt, in jedem der verschiedenen Repositorys vorhanden sein.

Der gängigste Repositorytyp ist ein LDAP-Verzeichnis (Lightweight Directory Access Protocol), bei dem es sich um eine spezialisierte Datenbank handelt, die für den Lesezugriff optimiert wurde und in der die Daten in einer Baumstruktur verwaltet werden. Konfigurieren Sie vor dem Zugriff auf ein LDAP-Verzeichnis für die JEE-Authentifizierung den Anwendungsserver für die Herstellung einer Verbindung zum LDAP-Verzeichnisserver. Geben Sie diese Informationen für WebSphere Application Server in die Administrationskonsole an. Für Apache Tomcat geben Sie diese Informationen in der Datei \conf\server.xml an.

Sie können für den Zugriff auf ein LDAP-Verzeichnis auch EGL-Code verwenden, der in Java™ generiert wurde und auf einem Server ausgeführt wird. Wenn Sie EGL-Code für den Zugriff auf ein LDAP-Verzeichnis verwenden wollen, definieren Sie in EGL entweder einen REST- oder SOAP-Service. Der Service kann für den Zugriff auf ein LDAP-Verzeichnis externe EGL-Typen verwenden, die JNDI-LDAP-Java-Klassen zugeordnet sind. Hier ein Beispiel für EGL-Code, mit dem eine Verbindung zu einem LDAP-Verzeichnisserver hergestellt wird:
// Für den Zugriff auf einen LDAP-Verzeichnisserver sind externe Typen erforderlich.
externalType ControlArray type  JavaObject
         { JavaName = "Control[]", PackageName = "javax.naming.ldap" }
end

externalType InitialDirContext type JavaObject
         { JavaName = "InitialDirContext", 
         PackageName = "javax.naming.directory" }
   function modifyAttributes( name String in, 
              mods ModificationItemArray in );
end

externalType InitialLdapContext extends InitialDirContext type JavaObject
         { JavaName = "InitialLdapContext", 
         PackageName = "javax.naming.ldap" }
   constructor( environment Hashtable in, connCtls ControlArray in );
end

externalType ModificationItemArray extends Object type JavaObject
         { JavaName = "ModificationItem[]", 
         PackageName = "javax.naming.directory" }
end

   // Instanziieren Sie eine Hashtabelle für Bindungskriterien.
   // Eine Hashtabelle ist in EGL bereits definiert.
   hashtable Hashtable = new Hashtable();

   // Eigenschaften finden Sie unter
   // http://java.sun.com/j2se/1.4.2/docs/guide/jndi/jndi-ldap.html.

   // öLegen Sie JNDI-Umgebungseigenschaften fest. 
   // Benutzer-ID und Kennwort werden als Zeichenfolgen (string) übergeben.
   hashtable.put( "java.naming.factory.initial", 
            "com.sun.jndi.ldap.LdapCtxFactory" );
   hashtable.put( "java.naming.provider.url", 
            "ldap://localhost:389/o=sample" );
   hashtable.put( "java.naming.security.principal",
            "uid=" + userid + ",ou=people,o=sample");
   hashtable.put( "java.naming.security.credentials", password );
   hashtable.put( "java.naming.security.authentication", "simple" );
   hashtable.put( "java.naming.referral", "follow" );
   hashtable.put( "java.naming.security.protocol", null );

   // Legen Sie LDAP-spezifische Eigenschaften fest.
   hashtable.put( "java.naming.ldap.version", "3" );

   // Stellen Sie eine Verbindung zum LDAP-Verzeichnisserver her.
   ctx InitialLdapContext = new InitialLdapContext( hashtable, null );
   if ( ctx != null )
      // Rufen Sie Daten ab.
      ...
   end

Weiteren EGL-Beispielcode, einschließlich von Code, mit dem Daten in einem LDAP-Verzeichnis abgerufen und geändert werden, finden Sie in äää'EGL-LDAP-Zugriffsbeispiel' oder äää'J2EE-Sicherheit mit EGL-LDAP-Zugriffsbeispiel' in der IBM® Rational® Business Developer-Dokumentation (im 'Inhalt' unter 'Beispiele').


Feedback