Servletsicherheitsmethoden

Die Servletsicherheitsmethoden "authenticate", "login", "logout", "getRemoteUser", "isUserInRole" und "getAuthType" sind Methoden der Schnittstelle "javax.servlet.http.HttpServletRequest".

authenticate

Anmerkung: Die Servletsicherheitsmethoden "authenticate", "login" und "logout" sind neue Methoden von Java™ Servlet 3.0 in diesem Release von WebSphere Application Server.

Die Methode "authenticate" authentifiziert einen Benutzer mittels des Anmeldemechanismus des Containers von WebSphere Application Server, der für den Servletkontext konfiguriert ist.

Die Syntax für die Methode "authenticate" ist wie folgt:
boolean authenticate(HttpServletResponse response))
In diesem Beispiel wird das folgende Element verwendet:
response
Dies ist die HTTP-Servletantwort ("HttpServletResponse"), die der HTTP-Servletanforderung ("HttpServletRequest") zugeordnet ist.

Die Methode "authenticate" gibt true zurück, wenn die Authentifizierung hergestellt wurde bzw. die Authentifizierung erfolgreich war.

Die Methode "authenticate" gibt false zurück, wenn die Authentifizierung unvollständig war und der zugrundeliegende Anmeldemechanismus als Antwort darauf die Nachricht und den HTTP-Statuscode zur Rückgabe an den Benutzer übergeben hat.

Tritt beim Schreiben der Antwort ein Fehler auf, wird die Ausnahme "java.io.IOException" ausgelöst.

Eine Servletausnahme ("ServletException") wird ausgelöst, wenn die Authentifizierung gescheitert ist. Für die Fehlerbehandlung ist der Caller (Aufrufende) zuständig (z. B. eine Nachricht darüber, dass der zugrundeliegende Anmeldemechanismus die Authentifizierung nicht hergestellt hat, und der HTTP-Statuscode, der an den Benutzer zurückgegeben werden soll).

Fehler vermeiden Fehler vermeiden: Beachten Sie beim Aufruf der Methode "authenticate" folgende Aspekte:
  • WebSphere Application Server gibt an den Client den Code HTTP 401 zurück.
  • Die Methode ist abhängig vom Anmeldemechanismus des Containers von WebSphere Application Server, der für den Servletkontext konfiguriert ist. Wenn für dieses Servlet beispielsweise eine Formularanmeldung definiert ist, werden ein Benutzername und ein Kennwort angefordert. Der Client sendet die Benutzer-ID und das Kennwort zur Authentifizierung an WebSphere Application Server.
Wichtig: Stellen Sie sicher, dass die Methode "authenticate" den Wert true zurückgibt, bevor Sie das neue Subjekt verwenden, um einen anderen Service aufzurufen. Beispiel:
Boolean authResultTrue = req.authenticate(response);
				if (!authResultTrue) {
	return;
} else {
		// Verwenden Sie das neue Aufruf-Subjekt, um andere Services aufzurufen.
	      }			
 
gotcha

login

Die Methode "login" authentifiziert einen Benutzer mit einer Benutzer-ID und einem Kennwort bei WebSphere Application Server. Wenn die Authentifizierung erfolgreich ist, werden ein Benutzersubjekt für den Thread und LDAP-Cookies (Lightweight Third Party Authentication) erstellt (wenn SSO (Single Sign-on) aktiv ist).

Die Syntax für die Methode "login" ist wie folgt:
login(java.lang.String username, java.lang.String password)
In diesem Beispiel werden folgende Elemente verwendet:
username
Die Zeichenfolge mit der Anmelde-ID des Benutzers.
password
Das Kennwort des Benutzers.

Eine Servletausnahme ("ServletException") wird ausgelöst, wenn der konfigurierte Anmeldemechanismus die Authentifizierung mit Benutzernamen und Kennwort nicht unterstützt, wenn (vor dem Aufruf von "login") bereits eine Identität authentifiziert wurde oder wenn die Prüfung von Benutzernamen und Kennwort scheitert.

Anmerkung: Sie können die angepasste Sicherheitseinstellung "com.ibm.websphere.security.webAlwaysLogin" auf den Wert true setzen, um auch dann eine Authentifizierung mit Benutzernamen und Kennwort bei der WebSphere-Anwendung auszuführen, wenn der Benutzer bereits authentifiziert wurde.

Weitere Informationen zum Ändern von angepassten Sicherheitseinstellungen finden Sie im Artikel "Vorhandene angepasste Eigenschaft in einer globalen Sicherheitskonfiguration oder in einer Sicherheitsdomänenkonfiguration ändern".

Anmerkung: Die Methode "login" verwendet immer die Benutzer-ID und das Kennwort für die Authentifizierung beim WebSphere-Anwendungsserver und auch die SSO-Informationen in "HttpServletRequest".
Fehler vermeiden Fehler vermeiden: Die Methoden "authenticate" und "login" legen das Aufruf-Subjekt als neues Subjekt fest. Wenn das Caller-Subjekt null ist, wird das neue Subjekt als Caller-Subjekt festgelegt. Wenn das Caller-Subjekt nicht null ist, wird das neue Subjekt nicht als Caller-Subjekt festgelegt.

Weil die Methoden "authenticate" und "login" das neue Subjekt als Aufruf-Subjekt festlegen, werden das im Implementierungsdeskriptor vom Run-as-Attribut definierte RunAs-Subjekt, die Sicherheitsannotation und die dynamische Annotation ignoriert.

gotcha

logout

Die Methode "logout" meldet den Benutzer von WebSphere Application Server ab und macht die HTTP-Sitzung ungültig. Während dieses Prozesses führt WebSphere Application Server folgende Prozesse aus:
  • Löscht die LTPA-Cookies, wenn SSO aktiviert ist.
  • Macht die HTTP-Sitzung ungültig.
  • Entfernt den Benutzer aus dem Authentifizierungscache.
  • Entfernt das Benutzersubjekt aus dem Thread.
  • Löscht das Caller-Subjekt und das Aufruf-Subjekt.
  • Setzt den Authentifizierungstyp auf null.

Nach der Abmeldung ist für den Zugriff auf eine geschützte Webressource eine erneute Authentifizierung erforderlich und die Methoden "getUserPrincipal", "getRemoteUser" und "getAuthType" geben null zurück.

Die Syntax für die Methode "logout" ist wie folgt:
logout()

Wenn die Abmeldung scheitert, wird eine Servletausnahme ("ServletException") ausgelöst.

Prüfereignistypen für die Methoden "authenticate", "login" und "logout"

Zum Prüfen der Methoden "authenticate", "login" und "logout" müssen einige Dateien für Prüfereignistypen erstellt oder erweitert werden. Diese Ereignistypen sind nicht Teil der Dateien für Standardereignistypen.

Tabelle 1. Prüfereignistypen für die Methoden "authenticate", "login" und "logout".

Folgende Prüfereignistypen sind für die Methoden "authenticate", "login" und "logout" erforderlich:

Methode Name des Prüfereignisses Prüfergebnis für das Ereignis
authenticate/login SECURITY_AUTHN SUCCESS und/oder FAILURE
logout SECURITY_AUTHN_TERMINATE SUCCESS
logout SECURITY_AUTHN_TERMINATE FAILURE

isUserInRole

(String Rollenname): Gibt true zurück, wenn der ferne Benutzer Zugang zur angegebenen Sicherheitsrolle hat. Wenn der ferne Benutzer keinen Zugang zur angegebenen Rolle hat oder kein Benutzer authentifiziert wurde, wird false zurückgegeben.

getRemoteUser

Die Methode "getRemoteUser" gibt die Anmeldung des Benutzers zurück, der die Anforderung stellt, falls der Benutzer authentifiziert wurde. Falls der Benutzer nicht authentifiziert wurde, gibt die Methode "getRemoteUser" null zurück.

getAuthType

Die Methode "getAuthType" gibt den Namen des Authentifizierungsschemas zurück, das verwendet wird, um das Servlet zu schützen. Wenn das Servlet nicht geschützt ist, gibt die Methode "getAuthType" null zurück.

Folgende Authentifizierungsschemas werden verwendet:
FORM
für formularbasierte Authentifizierung
BASIC
für Basisauthentifizierung
CLIENT_CERT
für Clientzertifikatsauthentifizierung
Anmerkung:
Bei beiden Methoden "getRemoteUser" und "getAuthType" richten sich die Daten, die zurückgegeben werden, danach, ob die Sicherheit in dem Anwendungsserver, in dem das Servlet implementiert ist, aktiviert ist. Es gibt folgende Möglichkeiten:
  • Wenn die Sicherheit aktiviert und ein Servlet geschützt ist, gibt die Methode "getRemoteUser" die Anmeldung zurück und die Methode "getAuthType" gibt das konfigurierte Authentifizierungsschema zurück.
  • Wenn die Anwendungssicherheit nicht aktiviert ist, geben beide Methoden null zurück.

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



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