Containergesteuerte JEE-Sicherheit verwenden

Um JSF-Webanwendungen zu sichern, können Sie containergesteuerte Sicherheit verwenden. Diese wird von einem JSF-kompatiblen Webanwendungsserver abgewickelt. Dieses Kapitel enthält einige Details, zum Beispiel Beispielanmelde- und Fehler-JSPs sowie eine Liste sicherheitsrelevanter EGL-Funktionen.

Lesen Sie auch die Dokumentation zu Ihrem Webanwendungsserver.

Rollen und Bedingungen in web.xml zuweisen

In der JEE-Sicherheit basiert die Berechtigung zum Zugreifen auf Webressourcen auf einer Sicherheitsrolle wie clerk oder manager. Jede Rolle besitzt einen vom Entwickler zugewiesenen Status und ist im JEE-Implementierungsdeskriptor (web.xml) gespeichert, der dem Anwendungscode beiliegt. In web.xml ist außerdem eine Gruppe von Bedingungen gespeichert, durch die definiert wird, welche Webseiten für Benutzer verfügbar sind, denen schließlich eine bestimmte Rolle zugewiesen wurde.

Gehen Sie wie folgt vor, um die Datei web.xml anzupassen:
  1. Klicken Sie in Ihrem Webprojekt mit der rechten Maustaste auf den Implementierungsdeskriptor und klicken Sie auf die Registerkarte Seiten.
  2. Geben Sie im Feld Anmelden die Authentifizierungsmethode an (zum Beispiel Formular, wofür die Verwendung von Anmelde- und Fehlerseiten erforderlich ist) und geben Sie das entsprechende Detail an (zum Beispiel Verweise auf die entsprechenden Anmelde- und Fehlerseiten).

Anmelde- und Fehlerseiten erstellen

Wenn Sie die Formularauthentifizierungsmethode verwenden, können Sie die folgenden JSP-Seiten anpassen:

  • Beispielanmelde-JSP
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 
        Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Insert title here</title>
      </head>
      <H1>Login Page</H1>
      <body>
        <form method="POST" action="j_security_check">
          User Name : <input type="text" name="j_username"/>
          Password  : <input type="password" name="j_password"/>
          <input type="submit" value="Login"/>
        </form>
      </body>
    </html>
  • Beispielfehler-JSP
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Insert title here</title>
      </head>
      <H1>Login Error Page</H1>
      <body>
    	 Status   =  Login Error !!!
      </body>
    </html>

Benutzer und Gruppen in application.xml zuweisen

Ein Bereitsteller (üblicherweise ein Systemadministrator) ordnet jede Sicherheitsrolle bestimmten Benutzern und Gruppen zu. Der Bereitsteller führt diese Zuordnung durch Anpassen der EAR-Projektimplementierungsbeschreibung (application.xml) durch, in der Regel durch Bearbeiten der Einstellungen auf der Registerkarte 'Sicherheit' für diese Datei.

Systemfunktionen zur Unterstützung der JEE-Sicherheit verwenden

Die folgenden sicherheitsrelevanten Funktionen aus der Systembibliothek J2EELib sind in jedem JSF-Handler verfügbar, unabhängig vom Authentifizierungstyp.
  • Mit getAuthenticationType wird die JEE-Authentifizierungsmethode zurückgegeben. Wenn keine derartige Authentifizierung verwendet wird, wird mit dieser Funktion eine leere Zeichenfolge zurückgegeben.

    Die am häufigsten verwendeten Authentifizierungsmethoden sind FORM (dabei kann sich der Benutzer ohne Beenden der Browsersitzung abmelden) und das sicherere CLIENT_CERT (Client Certification = Clientzertifizierung); dabei werden die Authentifizierungsdaten verschlüsselt und der Server muss optional ein Sicherheitszertifikat prüfen, bevor geprüft wird, ob die Daten akzeptiert werden können).

  • Mit getRemoteUser wird die Anmelde-ID des Benutzers zurückgegeben, sofern vorhanden. Wenn keine JEE-Authentifizierungsmethode verwendet wird, wird mit dieser Funktion eine leere Zeichenfolge zurückgegeben.
  • Mit isUserInRole wird ein boolescher Wert zurückgegeben, mit dem angegeben wird, ob sich der Benutzer in einer bestimmten Rolle befindet. Wenn keine Authentifizierung verwendet wird, wird mit dieser Funktion eine leere Zeichenfolge zurückgegeben.

    Mithilfe des Laufzeitwissens über die Rolle eines Benutzers wird ein direktes Verarbeiten der Anwendung entsprechend den Berechtigungsregeln ermöglicht.