Authentifizierungsmethode des Konsumenten des Benutzernamenstokens mit einem JAAS-Anmeldemodul in einem Stack ersetzen
Standardmäßig ist UNTConsumeLoginModule, der Web Services Security-Benutzernamenstokenkonsument, so definiert, dass der Benutzername und das Kennwort, die im Token enthalten sind, immer anhand der WebSphere-Registry validiert werden. Mit den von der GenericSecurityTokenFactory bereitgestellten SPIs können Sie die Authentifizierungsmethode umgehen.
Informationen zu diesem Vorgang
Wenn Sie die von UNTConsumeLoginModule verwendete Authentifizierungsmethode umgehen möchten, müssen Sie ein eigenes angepasstes JAAS-Anmeldemodul bereitstellen, das die Authentifizierung durchführt. Das angepasste Anmeldemodul befindet sich in einer angepassten JAAS-Konfiguration im Stack unterhalb von UNTConsumeLoginModule. UNTConsumeLoginModule konsumiert und validiert die Token-XML. Die Validierung der für den Benutzernamen und das Kennwort angegebenen Werte erfolgt durch das angepasste Anmeldemodul im Stack.
Weil mit UNTConsumeLoginModule die Annahme verbunden ist, dass Benutzername und Kennwort authentifiziert werden, muss ein Anmeldemodul im Stack, das für die Ausführung diese Funktion vorgesehen wird, höhere Anforderungen erfüllen als Anmeldemodule, die lediglich eine dynamische Tokenfunktionalität bereitstellen.
Wenn Sie für UNTConsumeLoginModule festlegen möchten, dass keine Authentifizierung von Benutzername und Kennwort erfolgen soll, müssen Sie im konfigurierten Callback-Handler die folgende Eigenschaft angeben:
com.ibm.wsspi.wssecurity.token.UsernameToken.authDeferred=true
Wie die meisten WS-Security-Anmeldemodule versetzt UNTConsumeLoginModule das konsumierte Token immer in die Map für gemeinsamen Status, auf die alle Anmeldemodule im Stack Zugriff haben. Wenn authDeferred=true angegeben ist, stellt UNTConsumeLoginModule während der Festschreibungsphase (Commit) sicher, dass dasselbe UsernameToken-Objekt, das ursprünglich in den gemeinsamen Status gesetzt wurde, an einer anderen Position in den gemeinsamen Status versetzt wurde. Wird dieses UsernameToken-Objekt nicht gefunden, wird eine Ausnahme des Typs LoginException ausgelöst. Daher ist es nicht möglich, lediglich im Callback-Handler authDeferred=true festzulegen, ohne dass ein zugehöriges Anmeldemodul das Token in den gemeinsamen Status zurückversetzt.