Programmiermodell Java Authentication and Authorization Service für Webauthentifizierung verwenden

WebSphere Application Server unterstützt das deklarative Java™-EE-Sicherheitsmodell (Java Platform, Enterprise Edition). Mit dem Java-EE-Implementierungsdeskriptor können Sie die Richtlinie für Authentifizierung und Zugriffssteuerung definieren. Sie können auch einen Stack angepasster Anmeldemodule erstellen, um die Authentifizierungsverfahren von WebSphere Application Server anzupassen.

Vorbereitende Schritte

Ein angepasstes Anmeldemodul kann unter anderem Principals und Berechtigungsnachweise zuordnen, angepasste Sicherheitstoken und Berechtigungsnachweise verarbeiten und Fehlerbehandlungsschritte ausführen. Normalerweise benötigen Sie für die Authentifizierungsfunktion keinen Anwendungscode. Falls Sie Authentifizierungsfunktionen in Anwendungscode ausführen müssen, wenden Sie die hier beschriebenen Programmiertechniken an. Verwenden Sie grundsätzlich die deklarative Sicherheit. Die in diesem Abschnitt beschriebenen Techniken sollten nur im Notfall verwendet werden.

Informationen zu diesem Vorgang

Wenn die Option SSO von LTPA (Lightweight Third-Party Authentication) aktiviert ist, wird die Anmeldesitzung des Web-Clients nach erfolgter Anmeldung von einem LTPA-SSO-Token-Cookie verfolgt. Bei der Abmeldung wird dieses Token gelöscht, um die Anmeldesitzung zu beenden. Das Serversubjekt wird jedoch nicht gelöscht. Beim Modell der deklarativen Sicherheit übernimmt der Web-Container von WebSphere Application Server automatisch die Clientauthentifizierung und die Verwaltung der Anmeldesitzung. Sie können die Authentifizierung im Anwendungscode durchführen, indem Sie eine Anmeldeseite ohne Java-EE-Sicherheitsbeschränkung definieren und Clientanforderungen zunächst zu Ihrer Anmeldeseite umleiten. Die Anmeldeseite kann das Programmiermodell Java Authentication and Authorization Service (JAAS) für die Authentifizierung verwenden. Wenn die Webanmeldemodule von WebSphere Application Server SSO-Cookies generieren sollen, müssen Sie die folgenden Schritte ausführen.

Vorgehensweise

  1. Erstellen Sie eine neue JAAS-Anmeldekonfiguration für das System. Klicken Sie zum Aufrufen dieser Anzeige auf Sicherheit > Globale Sicherheit. Klicken Sie unter "Java Authentication and Authorization Service" auf Systemanmeldungen.
  2. Klonen Sie die Anmeldekonfiguration WEB_INBOUND manuell, und ordnen Sie dem Klon einen neuen Aliasnamen zu. Zum Klonen der Anmeldekonfiguration klicken Sie auf Neu. Geben Sie einen Namen für die Konfiguration ein, und klicken Sie anschließend auf Anwenden. Klicken Sie unter "Weitere Eigenschaften" auf JAAS-Anmeldemodule. Klicken Sie auf Neu, und konfigurieren Sie das JAAS-Anmeldemodul. Weitere Informationen finden Sie im Artikel Anmeldemoduleinstellungen für Java Authentication and Authorization Service. Der Web-Container von WebSphere Application Server verwendet die Anmeldekonfiguration WEB_INBOUND für die Authentifizierung von Web-Clients. Änderungen an der Anmeldekonfiguration WEB_INBOUND wirken sich auf alle Webanwendungen in der Zelle aus. Klonen Sie zum Erstellen Ihrer eigenen Anmeldekonfiguration den Inhalt der Anmeldekonfiguration WEB_INBOUND.
  3. Wählen Sie das Anmeldemodul wsMapDefaultInboundLoginModule aus, und klicken Sie anschließend auf Angepasste Eigenschaften. In Ihrer Anmeldekonfiguration sind zwei Anmeldemodule definiert: ltpaLoginModule und wsMapDefaultInboundLoginModule.
  4. Fügen Sie ein Anmeldeeigenschaft mit dem Namen cookie und dem Wert true hinzu. Die beiden Anmeldemodule können jetzt LTPA-SSO-Cookies generieren. Fügen Sie die Anmeldeoption "Cookie" auf keinen Fall zur ursprünglichen Anmeldekonfiguration WEB_INBOUND hinzu.
  5. Ordnen Sie Ihre angepassten Anmeldemodule (LoginModule) im neuen Anmeldekonfigurationsstack an (optional).
  6. Verwenden Sie Ihre Anmeldeseite für eine programmgesteuerte Anmeldung, indem Sie mit der neu definierten Anmeldekonfiguration eine JAAS-Anmeldung LoginContext.login ausführen. Nach erfolgter Anmeldung generiert das ltpaLoginModule oder das wsMapDefaultInboundLoginModule bei erfolgreicher Authentifizierung ein LTPA-SSO-Cookie. Welches der beiden LoginModules das SSO-Cookie generiert, hängt von vielen Faktoren ab, z. B. von der Authentifizierungskonfiguration des Systems und von Laufzeitbedingungen. (Eine ausführlichere Beschreibung würde hier zu weit führen.)
  7. Rufen Sie die modifizierte Methode WSSubject.setRunAsSubject auf, um das Subjekt zum Authentifizierungscache hinzuzufügen. Das Subject muss ein von LoginModule erstelltes WebSphere Application Server-JAAS-Subject sein. Durch das Hinzufügen des Subjekts zum Authentifizierungscache wird erneut ein Subjekt aus dem SSO-Token erstellt.
  8. Verwenden Sie Ihre Seite für programmgesteuerte Abmeldung, um SSO-Cookies zu widerrufen, indem Sie die Methode revokeSSOCookies in der Klasse WSSecurityHelper aufrufen.

    Der Begriff "Cookies" wird verwendet, weil WebSphere Application Server ab Version 5.1.1 ein neues LTPA-SSO-Token mit einem anderen Verschlüsselungsalgorithmus unterstützt. Aus Gründen der Abwärtskompatibilität kann jedoch die Generierung des ursprünglichen LTPA-SSO-Token konfiguriert werden. Beachten Sie, dass sich das Subjekt noch immer im Authentifizierungscache befindet und nur die SSO-Cookies annulliert wurden.

    Veraltetes Feature Veraltetes Feature: Die Methode "revokeSSOCookies(HttpServletRequest, HttpServletResponse)" aus der Klasse "WSSecurityHelper" wird nicht weiter unterstützt. Verwenden Sie die Funktionalität, die mit der Methode "logout()" von Java Servlet-3.0 bereitgestellt wird. Lesen Sie hierzu Artikel Servletsicherheitsmethoden.depfeat

Beispiel

Verwenden Sie das folgende Codebeispiel, um die Authentifizierung durchzuführen.

Fehler vermeiden Fehler vermeiden: Wenn Sie das Kennwort für die Factoryklasse "WSCallbackHandlerFactoryset" zum Abrufen der Handler auf null setzen, wie es folgenden Beispiel der Fall ist, können Sie Identitätszusicherung ohne Kennwort verwenden.gotcha
Suppose you wrote a LoginServlet.java:

		Import com.ibm.wsspi.security.auth.callback.WSCallbackHandlerFactory;
		Import com.ibm.websphere.security.auth.WSSubject;

		public Object login(HttpServletRequest req, HttpServletResponse res) 
		throws ServletException {

		PrintWriter out = null;
	try  { 
		out = res.getWriter();
      res.setContentType("text/html");
	} catch (java.io.IOException e) {
				// Fehlerbehandlung
	}

		Subject subject = null;
	try  { 
		LoginContext lc = new LoginContext("system.Your_login_configuration",
WSCallbackHandlerFactory.getInstance().getCallbackHandler(
userid, null, password, req, res, null));
		lc.login(); 
				subject = lc.getSubject();
      WSSubject.setRunAsSubject(subject);
	} catch (Exception e)  {
				// Abfangen aller möglichen Ausnahmen, sofern Sie sie gesondert bearbeiten möchten
				out.println("Exception in LoginContext login + Exception = " +
 e.getMessage());                
				throw new ServletException(e.getMessage());
	}

Der folgende Beispielcode widerruft die SSO-Cookies bei einer programmgesteuerten Abmeldung:




LogoutServlet.java:

		public void logout(HttpServletRequest req, HttpServletResponse res,
 Object retCreds)  throws ServletException {
		 		 PrintWriter out =null;
		 try  { 
		 	out = res.getWriter();
        res.setContentType("text/html");
		 } catch (java.io.IOException e) {
						// Fehlerbehandlung
		 }
		 try  { 
		  			  	WSSecurityHelper.revokeSSOCookies(req, res);
		 } catch (Exception e)  {
		 			// Abfangen aller möglichen Ausnahmen, sofern Sie sie gesondert bearbeiten möchten
		 			 	out.println("JAASLogoutServlet: logout Exception = " + e.getMessage());
		 			 	throw new ServletException(e);
		 }
	 }

Nächste Schritte

Weitere Informationen zur JAAS-Authentifizierung finden Sie im Artikel Programmgesteuerte Anmeldungen mit JAAS entwickeln (Java Authentication and Authorization Service). Weitere Informationen zum Anmeldemodul AuthenLoginModule finden Sie im Artikel Beispiel: Serverseitige JAAS-Authentifizierungs- und -Anmeldekonfiguration anpassen (Java Authentication and Authorization Service).

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_jaasauthentprog
Dateiname:tsec_jaasauthentprog.html