Hallo,
ich suche verzweifelt den Königsweg, um eine komplette Webanwendung abzusichern.
Es gibt tausende von Dokumenten zum Thema, aber ich sehe momentan den Wald
vor Bäumen nicht mehr. Daher bitte ich um etwas Orientierung. Vielleicht kann mir
jemand mit ein paar konkreten Beispielen weiterhelfen.
Fangen wir an: Ich habe eine Java-EE-6-Webanwendung (Glassfish) mit JSF 2.0 (Facelets),
EJB, JPA und Servlets. Username, Passwort und 1 Rolle (nicht n Rollen) stehen in einer
Datenbank, die per JNDI angesprochen wird.
Der User loggt sich ein und soll abhängig von seiner Rolle bestimmte Seiten sehen
und andere eben nicht.
1. Ich will JSF-Seiten (*.xhtml) je nach Rolle sichtbar machen.
Bsp.: Admin darf erstelleUser.xhtml, loescheUser.xhtml, veraendereUser.xhtml sehen.
Angesteller darf zeigeUrlaub.xhtml und beantrageUrlaub.xhtml sehen.
Wenn der Angestellte per Eingabe in die Adresszeile "loescheUser.xhtml" (nicht erlaubt!)
eingibt, soll er auf die Login-Seite zurück (alternativ: Fehlerseite).
Hier will ich nicht in einer Konfig-Datei alle Rollen manuell und hartkodiert eingeben,
sondern wie gesagt die Datenbankeinträge (Tabelle "User" mit "Username", "Passwort",
"Rolle", etc.) nutzen.
Wie gehe ich heutzutage da am besten vor? Ich will natürlich nicht in jeder Seite
<c:if test="!bean.isLoggedIn><gehe_zu_Fehlerseite></c:test>
schreiben, sondern das Ganze zentral konfigurieren.
Sind Filter zu empfehlen oder was anderes?
2. Die Servlet-Seiten sollen ebenso gesichert werden.
3. Ich habe mir JAAS angesehen und habe noch Probleme, den Nutzen zu verstehen.
Ist das noch "aktuell" bzw. sinnvoll für Webanwendungen?
4. Die Webanwendung hat auf den JSF-Seiten ein Richfaces-Menü, die abhängig
von der Rolle des Nutzers anders aussieht. Ich muss also in JSF die Rolle mit Beans
abfragen. Wie passt das in eine integrierte Lösung rein, ohne viele unterschiedliche
Login-Klassen schreiben zu müssen.
5. Wenn die "Lösung" eine serverübergreifende Lösung wäre (hier: Glassfish UND Jboss
als Deploymentplattformen), wäre das super.
Vielen Dank schon mal,
Bernd
ich suche verzweifelt den Königsweg, um eine komplette Webanwendung abzusichern.
Es gibt tausende von Dokumenten zum Thema, aber ich sehe momentan den Wald
vor Bäumen nicht mehr. Daher bitte ich um etwas Orientierung. Vielleicht kann mir
jemand mit ein paar konkreten Beispielen weiterhelfen.
Fangen wir an: Ich habe eine Java-EE-6-Webanwendung (Glassfish) mit JSF 2.0 (Facelets),
EJB, JPA und Servlets. Username, Passwort und 1 Rolle (nicht n Rollen) stehen in einer
Datenbank, die per JNDI angesprochen wird.
Der User loggt sich ein und soll abhängig von seiner Rolle bestimmte Seiten sehen
und andere eben nicht.
1. Ich will JSF-Seiten (*.xhtml) je nach Rolle sichtbar machen.
Bsp.: Admin darf erstelleUser.xhtml, loescheUser.xhtml, veraendereUser.xhtml sehen.
Angesteller darf zeigeUrlaub.xhtml und beantrageUrlaub.xhtml sehen.
Wenn der Angestellte per Eingabe in die Adresszeile "loescheUser.xhtml" (nicht erlaubt!)
eingibt, soll er auf die Login-Seite zurück (alternativ: Fehlerseite).
Hier will ich nicht in einer Konfig-Datei alle Rollen manuell und hartkodiert eingeben,
sondern wie gesagt die Datenbankeinträge (Tabelle "User" mit "Username", "Passwort",
"Rolle", etc.) nutzen.
Wie gehe ich heutzutage da am besten vor? Ich will natürlich nicht in jeder Seite
<c:if test="!bean.isLoggedIn><gehe_zu_Fehlerseite></c:test>
schreiben, sondern das Ganze zentral konfigurieren.
Sind Filter zu empfehlen oder was anderes?
2. Die Servlet-Seiten sollen ebenso gesichert werden.
3. Ich habe mir JAAS angesehen und habe noch Probleme, den Nutzen zu verstehen.
Ist das noch "aktuell" bzw. sinnvoll für Webanwendungen?
4. Die Webanwendung hat auf den JSF-Seiten ein Richfaces-Menü, die abhängig
von der Rolle des Nutzers anders aussieht. Ich muss also in JSF die Rolle mit Beans
abfragen. Wie passt das in eine integrierte Lösung rein, ohne viele unterschiedliche
Login-Klassen schreiben zu müssen.
5. Wenn die "Lösung" eine serverübergreifende Lösung wäre (hier: Glassfish UND Jboss
als Deploymentplattformen), wäre das super.
Vielen Dank schon mal,
Bernd
Zuletzt bearbeitet: