Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:apache_tomcat_7_-_ldap-authentifizierung_jndirealm

Dies ist eine alte Version des Dokuments!


Apache Tomcat 7 - LDAP-Authentifizierung JNDIRealm

Apache Tomcat stellt eine Umgebung zur Ausführung von Java-Code für Web-Server bereit. Es handelt sich um einen Servlet-Container, der mithilfe des JSP-Compilers Jasper JavaServer Pages in Servlets übersetzen und ausführt. Zusätzlich ist ein kompletter HTTP-Server integriert.

Die Nutzung einer Datei zur Authentifizierung von Benutzer, welche standardmäßig

  • /etc/tomcat/tomcat-users.xml

ist, soll hier deaktiviert werden, um gegen einen

  • LDAP-Server

zu authentifizieren.

Voraussetzungen

Nachfolgende Voraussetzungen müssen gegeben sein, um die Apache Tomcat LDAP-Authentifizierung JNDIRealm durchführen zu können:

Konfiguration: LDAP

Nachfolgende Konfiguration zeigt die notwendigen Ergänzungen und Änderungen an der unter nachfolgendem internen Link gezeigten Installation eines LDAP-Server, hier OpenLDAP

:!: WICHTIG - Nachfolgende Konfigurationen sind auf dem LDAP-Server durchzuführen !!!

LDIF: TomcatRoles

Mit nachfolgendem Befehl soll nun eine LDIF-Datei in nachfolgendem Verzeichnis, mit nachfolgendem Namen und nachfolgendem Inhalt erstellt werden.

LDIF-Datei Verwendungszweck
/etc/openldap/ldif/cn=config_TomcatRoles.ldif Erstellung vom Gruppen und Gruppenmitgliedern
# touch /etc/openldap/ldif/cn=config_TomcatRoles.ldif

Die LDIF-Datei /etc/openldap/ldif/cn=config_TomcatRoles.ldif soll nachfolgenden Inhalt bekommen:

dn: ou=TomcatRoles,dc=tachtler,dc=net
objectClass: organizationalUnit
objectClass: top
ou: TomcatRoles
 
dn: cn=login,ou=TomcatRoles,dc=tachtler,dc=net
objectClass: groupOfUniqueNames
objectClass: top
uniqueMember: uid=klaus,ou=People,dc=tachtler,dc=net
 
dn: cn=admin,ou=TomcatRoles,dc=tachtler,dc=net
objectClass: groupOfUniqueNames
objectClass: top
uniqueMember: uid=klaus,ou=People,dc=tachtler,dc=net
 
dn: cn=admin-gui,ou=TomcatRoles,dc=tachtler,dc=net
objectClass: groupOfUniqueNames
objectClass: top
uniqueMember: uid=klaus,ou=People,dc=tachtler,dc=net
 
dn: cn=admin-script,ou=TomcatRoles,dc=tachtler,dc=net
objectClass: groupOfUniqueNames
objectClass: top
uniqueMember: uid=klaus,ou=People,dc=tachtler,dc=net
 
dn: cn=manager,ou=TomcatRoles,dc=tachtler,dc=net
objectClass: groupOfUniqueNames
objectClass: top
uniqueMember: uid=klaus,ou=People,dc=tachtler,dc=net
 
dn: cn=manager-gui,ou=TomcatRoles,dc=tachtler,dc=net
objectClass: groupOfUniqueNames
objectClass: top
uniqueMember: uid=klaus,ou=People,dc=tachtler,dc=net
 
dn: cn=manager-script,ou=TomcatRoles,dc=tachtler,dc=net
objectClass: groupOfUniqueNames
objectClass: top
uniqueMember: uid=klaus,ou=People,dc=tachtler,dc=net
 
dn: cn=manager-jmx,ou=TomcatRoles,dc=tachtler,dc=net
objectClass: groupOfUniqueNames
objectClass: top
uniqueMember: uid=klaus,ou=People,dc=tachtler,dc=net
 
dn: cn=manager-status,ou=TomcatRoles,dc=tachtler,dc=net
objectClass: groupOfUniqueNames
objectClass: top
uniqueMember: uid=klaus,ou=People,dc=tachtler,dc=net

Abschließend wird mit nachfolgenden Befehlen der Inhalt der LDIF-Dateien im laufendem Betrieb des OpenLDAP-Servers der Konfiguration des OpenLDAP-Servers hinzugefügt:

:!: HINWEIS - Ab hier ist das Passwort von dc=Manager,dc=tachtler,dc=net einzugeben!

# ldapadd -W -x -D cn=Manager,dc=tachtler,dc=net -f /etc/openldap/ldif/cn\=config_TomcatRoles.ldif 
Enter LDAP Password: 
adding new entry "ou=TomcatRoles,dc=tachtler,dc=net"

adding new entry "cn=login,ou=TomcatRoles,dc=tachtler,dc=net"

adding new entry "cn=admin,ou=TomcatRoles,dc=tachtler,dc=net"

adding new entry "cn=admin-gui,ou=TomcatRoles,dc=tachtler,dc=net"

adding new entry "cn=admin-script,ou=TomcatRoles,dc=tachtler,dc=net"

adding new entry "cn=manager,ou=TomcatRoles,dc=tachtler,dc=net"

adding new entry "cn=manager-gui,ou=TomcatRoles,dc=tachtler,dc=net"

adding new entry "cn=manager-script,ou=TomcatRoles,dc=tachtler,dc=net"

adding new entry "cn=manager-jmx,ou=TomcatRoles,dc=tachtler,dc=net"

adding new entry "cn=manager-status,ou=TomcatRoles,dc=tachtler,dc=net"

Zur Überprüfung ob die Anlage der Gruppen und Gruppenmitglieder funktioniert hat, kann nachfolgender Befehl verwendet werden, welche die nachfolgende Ausgabe erzeugen sollte:

ldapsearch -x -LLL -H ldap://ldap.idmz.tachtler.net -b "ou=TomcatRoles,dc=tachtler,dc=net" -W -D "cn=Ersatzbenutzer,dc=tachtler,dc=net" "(objectclass=*)"
Enter LDAP Password: 
dn: ou=TomcatRoles,dc=tachtler,dc=net
objectClass: organizationalUnit
objectClass: top
ou: TomcatRoles
 
dn: cn=login,ou=TomcatRoles,dc=tachtler,dc=net
objectClass: groupOfUniqueNames
objectClass: top
uniqueMember: uid=klaus,ou=People,dc=tachtler,dc=net
cn: login
 
dn: cn=admin,ou=TomcatRoles,dc=tachtler,dc=net
objectClass: groupOfUniqueNames
objectClass: top
uniqueMember: uid=klaus,ou=People,dc=tachtler,dc=net
cn: admin
 
dn: cn=admin-gui,ou=TomcatRoles,dc=tachtler,dc=net
objectClass: groupOfUniqueNames
objectClass: top
uniqueMember: uid=klaus,ou=People,dc=tachtler,dc=net
cn: admin-gui
 
dn: cn=admin-script,ou=TomcatRoles,dc=tachtler,dc=net
objectClass: groupOfUniqueNames
objectClass: top
uniqueMember: uid=klaus,ou=People,dc=tachtler,dc=net
cn: admin-script
 
dn: cn=manager,ou=TomcatRoles,dc=tachtler,dc=net
objectClass: groupOfUniqueNames
objectClass: top
uniqueMember: uid=klaus,ou=People,dc=tachtler,dc=net
cn: manager
 
dn: cn=manager-gui,ou=TomcatRoles,dc=tachtler,dc=net
objectClass: groupOfUniqueNames
objectClass: top
uniqueMember: uid=klaus,ou=People,dc=tachtler,dc=net
cn: manager-gui
 
dn: cn=manager-script,ou=TomcatRoles,dc=tachtler,dc=net
objectClass: groupOfUniqueNames
objectClass: top
uniqueMember: uid=klaus,ou=People,dc=tachtler,dc=net
cn: manager-script
 
dn: cn=manager-jmx,ou=TomcatRoles,dc=tachtler,dc=net
objectClass: groupOfUniqueNames
objectClass: top
uniqueMember: uid=klaus,ou=People,dc=tachtler,dc=net
cn: manager-jmx
 
dn: cn=manager-status,ou=TomcatRoles,dc=tachtler,dc=net
objectClass: groupOfUniqueNames
objectClass: top
uniqueMember: uid=klaus,ou=People,dc=tachtler,dc=net
cn: manager-status

LDIF: TomcatRolesAccess

Durch nachfolgende Abfrage, kann aufgelistet werden, welche Zugriffsrechte für die einzelnen im (DIT Directory Information Tree) enthaltenen Benutzerstrukturen bereits existieren, um diese Informationen als Grundlage für Anpassungen verwenden zu können:

# ldapsearch -W -x -D cn=config -b olcDatabase={2}hdb,cn=config
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <olcDatabase={2}hdb,cn=config> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
 
# {2}hdb, config
dn: olcDatabase={2}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
olcDbIndex: uidNumber,gidNumber,loginShell eq,pres
olcDbIndex: uid,memberUid eq,pres,sub
olcDbIndex: nisMapName,nisMapEntry eq,pres,sub
olcDbIndex: uniqueMember eq,pres
olcSuffix: dc=tachtler,dc=net
olcRootDN: cn=Manager,dc=tachtler,dc=net
olcRootPW: {SSHA}moVXokSVz9/pcZpdyJ0EYlzutrnt4iK1
olcAccess: {0}to attrs=userPassword,shadowLastChange,shadowMax,shadowWarning b
 y self write by dn="cn=Manager,dc=tachtler,dc=net" write by dn="cn=Ersatzbenu
 tzer,dc=tachtler,dc=net" read by anonymous auth by * none
olcAccess: {1}to dn="cn=Manager,dc=tachtler,dc=net" by self write by * none
olcAccess: {2}to dn="cn=Ersatzbenutzer,dc=tachtler,dc=net" by self write by dn
 ="cn=Manager,dc=tachtler,dc=net" write by * none
olcAccess: {3}to dn.regex="cn=([^,]+),ou=Group,dc=tachtler,dc=net" by self wri
 te by dn="cn=Manager,dc=tachtler,dc=net" write by dn="cn=Ersatzbenutzer,dc=ta
 chtler,dc=net" read by dn.exact,expand="uid=$1,ou=People,dc=tachtler,dc=net" 
 read by * none
olcAccess: {4}to dn.regex="uid=([^,]+),ou=People,dc=tachtler,dc=net" by self w
 rite by dn="cn=Manager,dc=tachtler,dc=net" write by dn="cn=Ersatzbenutzer,dc=
 tachtler,dc=net" read by dn.exact,expand="uid=$1,ou=People,dc=tachtler,dc=net
 " read by * none
olcAccess: {5}to * by self write by dn.base="cn=Manager,dc=tachtler,dc=net" wr
 ite by * read
 
# search result
search: 2
result: 0 Success
 
# numResponses: 2
# numEntries: 1

Um Änderungen an diesen Zugriffsberechtigungen durchzuführen, um so die Zugriffsrechte zu beschränken, sind zwei wesentliche Schritte notwendig:

  1. Überschreiben eines Teils der aktuellen ACL-Konfiguration (Regel {5})
  2. Neuanlage des vorher gelöschten Teils der alten ACL-Konfiguration von (Regel {5})

Mit nachfolgendem Befehl soll nun eine LDIF-Datei in nachfolgendem Verzeichnis, mit nachfolgendem Namen und nachfolgendem Inhalt erstellt werden.

LDIF-Datei Verwendungszweck
/etc/openldap/ldif/cn=config_TomcatRolesAccess.ldif Zugriffsbeschränkung für die Gruppe TomcatRoles
# touch /etc/openldap/ldif/cn=config_TomcatRolesAccess.ldif

Die LDIF-Datei /etc/openldap/ldif/cn=config_TomcatRolesAccess.ldif soll nachfolgenden Inhalt bekommen:

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {5}to dn.regex="cn=([^,]+),ou=TomcatRoles,dc=tachtler,dc=net" by self write by dn="cn=Manager,dc=tachtler,dc=net" read by dn="cn=Ersatzbenutzer,dc=tachtler,dc=net" read by * none
olcAccess: {6}to * by self write by dn.base="cn=Manager,dc=tachtler,dc=net" write by * read

Abschließend wird mit nachfolgenden Befehlen der Inhalt der LDIF-Dateien im laufendem Betrieb des OpenLDAP-Servers der Konfiguration des OpenLDAP-Servers hinzugefügt:

:!: HINWEIS - Ab hier ist das Passwort von dc=Manager,dc=tachtler,dc=net einzugeben!

# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/ldif/cn\=config_TomcatRolesAccess.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={2}hdb,cn=config"

Zur Überprüfung ob die Zugriffsbeschränkung auf die Gruppen funktioniert hat, kann nachfolgender Befehl verwendet werden, welche die nachfolgende Ausgabe erzeugen sollte:

# ldapsearch -W -x -D cn=config -b olcDatabase={2}hdb,cn=config

Nachfolgende Erklärungen beschreiben die durchgeführten Änderungen:

Zugriffsrecht: {cn=([^,]+),ou=TomcatRoles,dc=tachtler,dc=net

olcAccess: {5}to dn.regex="cn=([^,]+),ou=TomcatRoles,dc=tachtler,dc=net" by self write by dn="cn=Manager,dc=tachtler,dc=net" read by dn="cn=Ersatzbenutzer,dc=tachtler,dc=net" read by * none

Auf den Eintrag

  • cn=([^,]+),ou=TomctRoles,dc=tachtler,dc=net

können die nachfolgenden Benutzer mit nachfolgenden Rechten zugreifen:

Zugriffsformulierung Benutzer Zugriffsrecht
by self write self (selbst) schreiben
by dn=„cn=Manager,dc=tachtler,dc=net“ write Manager schreiben
by dn=„cn=Ersatzbenutzer,dc=tachtler,dc=net“ read Ersatzbenutzer lesen
by * none <ALLE ANDEREN> <KEINE RECHTE>

Der Eintrag steht für den einzelnen Benutzer im Teil des DIT Directory Information Tree ou=TomcatRoles,dc=tachtler,dc=net für alle dort enthaltenen Einträge.

Zugriffsrecht: *

olcAccess: {6}to * by self write by dn.base="cn=Manager,dc=tachtler,dc=net" write by * read

Auf den Eintrag

  • *

können die nachfolgenden Benutzer mit nachfolgenden Rechten zugreifen:

Zugriffsformulierung Benutzer Zugriffsrecht
by self write self (selbst) schreiben
by dn=„cn=Manager,dc=tachtler,dc=net“ write Manager schreiben
by * read <ALLE ANDEREN> lesen

Der Eintrag steht für alle Einträge, ohne besondere Beschränkungen.

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/apache_tomcat_7_-_ldap-authentifizierung_jndirealm.1431008800.txt.gz · Zuletzt geändert: 2015/05/07 16:26 von klaus