LDAP Anbindung prüfen
Zuerst sollte geprüft werden, ob der Weg zu dem LDAP Server frei ist. Dazu gibt es ein Befehl ldapsearch mit dem der Zugang getestet werden kann. Hier gibt es noch verschiedenen Metoden. Drei davon werden hier kurz beschrieben:
ldapsearch ohne Passwort
Der einfachste Weg ist, wenn der LDAP Server ohne Passwort angesprochen werden kann. Hier wird nur die Server-Adresse und die SearchBase benötigt:
ldapsearch -H ldaps://fh-universe.de -x -b dc=fh-universe,dc=de
ldapsearch mit Benutzerkennung
Um zu testen, ob eine Benutzerkennung richtig funktioniert, kann auch nur diese abgefragt werden. Bei dem folgenden Befehl wird dann auch das Passwort der Kennung andre abgefragt. Der Pfad kann natürlich variieren, je nach LDAP Konfiguration.
ldapsearch -H ldaps://fh-universe.de -x -D uid=andre,ou=People,dc=fh-universe,dc=de -b dc=fh-universe,dc=de -W uid=andre
ldapsearch mit Adminkennung
In seltenen Fällen ist auch eine Adminkennung notwendig. Um zu testen ob diese funktioniert kann folgender Befehl benutzt werden:
ldapsearch -H ldaps://fh-universe.de -x -D ou=People,dc=fh-universe,dc=de -b dc=fh-universe,dc=de -W uid=admin
Tomcat
In der server.xml muss unterhalb von dem letzten Realm die LDAP Anbindung eingefügt werden. Das sieht dann ungefähr folgendermaßen aus:
<Realm className="org.apache.catalina.realm.JNDIRealm" debug="99" connectionURL="ldaps://fh-universe.de:636" userPattern="uid={0},ou=People,dc=fh-universe,dc=de" />
Zusätzlich wird eventuell folgendes in dem Connector Atribut benötigt:
tomcatAuthentication="false" tomcatAuthorization="false"
Das könnte dann z.B. so aussehen:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" tomcatAuthentication="false" tomcatAuthorization="false" />
Oder für AJP:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" address="0.0.0.0" allowedRequestAttributesPattern=".*" secretRequired="false" tomcatAuthentication="false" tomcatAuthorization="false" />
web.xml
In der web.xml muss nun noch eingerichtet werden, welches Verzeichnis von dem Tomcat geschützt wird und welche Anmelde-Seite verwendet werden soll um sich dann über den Tomcat mit LDAP zu authentifizieren.
<security-constraint> <display-name>Example Security Constraint</display-name> <web-resource-collection> <web-resource-name>Protected Area</web-resource-name> <!-- Define the context-relative URL(s) to be protected --> <url-pattern>/ldap/*</url-pattern> <!-- If you list http methods, only those methods are protected --> <http-method>DELETE</http-method> <http-method>GET</http-method> <http-method>POST</http-method> <http-method>PUT</http-method> </web-resource-collection> <auth-constraint> <!-- Anyone with one of the listed roles may access this area --> <role-name>*</role-name> </auth-constraint> </security-constraint> <!-- Default login configuration uses form-based authentication --> <login-config> <auth-method>FORM</auth-method> <realm-name>SuperX Authentication Area</realm-name> <form-login-config> <form-login-page>/ldap/ldap_minimal.jsp</form-login-page> <form-error-page>/ldap/anmeldung_fail.jsp</form-error-page> </form-login-config> </login-config> <!-- Security roles referenced by this web application --> <security-role> <role-name>*</role-name> </security-role>
Das geschützte Verzeichnis hier ist der ldap Ordner unterhalb von der SuperX-Webapplikation. Das bedeutet, dass nur wenn man im Browser in das Verzeichnis wechselt mit der LDAP Authentifizierung konfrontiert wird. Dadurch ist der normale SuperX Login weiterhin zugänglich. Wenn das nicht gewünscht ist, sollte in dem url-pattern nur "/*" stehen oder "/xml/*".
Bei form-login-page wird angegeben welche Seite für den LDAP Login verwendet werden soll.