WebSphere JAX-WS Cross-Cell-Authentifizierung
Wollen wir bauen eine front-end-web-Anwendung zur Nutzung der WPS' HumanTask API mithilfe von JAX-WS. Diese web-Anwendung sollte in der Lage sein, um die Abfrage Aktueller Aufgaben für einen bestimmten Benutzer, behaupten, Aufgaben werden nicht in Anspruch genommen, die zuvor von einem anderen Benutzer, Aufgaben und so weiter. Diese web-Anwendung bereitgestellt wird, die auf eine 7.0 WAR auf eine andere Zelle als die Bereitstellung der HumanTask service (Derzeit sind wir mit einem anderen WPS-Instanz, wie das WAR, aber irgendwann ist es ein einfaches WAR, ohne die WPS-Funktionen). Wir synchronisiert LTPA-generation-Tasten mit Hilfe der folgenden Schritte aus:
- Anmeldung zu einer Zelle
- Gehen Sie zu "Sicherheit" > "Globale Sicherheit". Unter "Authentifizierung" klicken Sie auf "LTPA"
- Unter "Cross-cell single-sign-on"
- Ein Passwort zu erstellen
- Bestätigen Sie das Kennwort
- Input der name der Datei, in die die LTPA-Schlüssel exportiert werden
- Klicken Sie auf "Export keys"
- Abmelden
- Kopieren Sie die generierte Datei auf den anderen server
- Login auf die andere Zelle
- Gehen Sie zu "Sicherheit" > "Globale Sicherheit". Unter "Authentifizierung" klicken Sie auf "LTPA"
- Unter "Cross-cell single-sign-on"
- Eingabe altes Kennwort
- Kennwort bestätigen
- Input der name der Datei mit den exportierten LTPA-Schlüssel
- Klicken Sie auf "Import keys"
- Server-Neustart
Entwickelten wir eine einfache web-Anwendung mit GWT als proof-of-concept mit einem einfachen UI-und web-service-client verbraucht die HumanTask JAX-WS-service. Diese web-Anwendung ist geschützt hinter einem Siteminder-Authentifizierungsserver (bei der ersten Eingabe der web-Anwendung Siteminder-agent leitet auf eine web-form, die nach Anmeldeinformationen). Web-service-client wurde entwickelt folgenden JAX-WS-standards, keine weiteren Abhängigkeiten Hinzugefügt wurden, setzen wir auf WebSphere JAX-WS-Implementierung (Apache Axis2). Nach der Implementierung getestet haben wir zwei Szenarien ohne Glück:
Szenario A:
- Standardmäßig WPS' HumanTask service-provider angeschlossen ist, um policy set "bit-Web-Service" mit den Standard-Richtlinien verbindlich und Politik setzen Dateifreigabe deaktiviert.
- Wir konfigurieren unsere HumanTask service-client zu verwenden dieselbe Politik gesetzt, als Dienstleister.
-
Anmelden, um benutzerdefinierte web-Anwendung. Beim Versuch der Abfrage aktuellen Aufgaben, die wir erhalten folgende Ausnahme:
com.ibm.wsspi.wssecurity.core.SoapSecurityException: security.wssecurity.WSSContextImpl.s02: com.ibm.websphere.security.WSSecurityException: Exception org.apache.axis2.AxisFault: CWWSS6521E: The Login failed because of an exception: javax.security.auth.login.LoginException: Login Failure: all modules ignored ocurred while running action: com.ibm.ws.wssecurity.handler.WSSecurityGeneratorHandler$2@6fef6fef
Keine Fehlermeldung auf service provider-Seite.
Szenario B:
- Ändern, WPS' HumanTask service-provider-Konfiguration Aktivierung policy set Austausch über HTTP GET. Diese Weise service provider WSDL enthält Informationen über die policy gesetzt werden.
- Change policy set-Konfiguration im service-client zu erhalten, policy set von Anbieter HTTP GET.
-
Anmelden, um benutzerdefinierte web-Anwendung. Beim Versuch der Abfrage aktuellen Aufgaben, die wir erhalten folgende Ausnahme:
javax.xml.ws.soap.SOAPFaultException: security.wssecurity.WSSContextImpl.s02: com.ibm.websphere.security.WSSecurityException: Exception org.apache.axis2.AxisFault: CWWSS6521E: The Login failed because of an exception: javax.security.auth.login.LoginException: Login module com.ibm.ws.wssecurity.wssapi.token.impl.UNTConsumeLoginModule login() method returned false ocurred while running action: com.ibm.ws.wssecurity.handler.WSSecurityConsumerHandler$1@54a054a0
Bevor der Punkt erreicht, wo bisherige Ausnahme gemeldet wird, sehen wir folgende Warnung bei service-client-Protokolle:
CWWSS7053W: No web services security custom bindings were found. Default bindings will be used.
Service provider logs können wir erkennen folgende Fehlermeldung:
CWWSS5514E: An exception while processing WS-Security message.
Und eine Reihe von FFDCs generiert Berichterstattung die gleiche Ausnahme haben wir bei der service-client-Seite.
Jemanden, der uns helfen könnte wäre Super!!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wir hatten das gleiche problem aber lösen konnten Sie es über die folgenden Schritte. Im wesentlichen müssen Sie ändern die Standard-Richtlinien angewendet, um die HTM-JAXWS-API (die Standardeinstellung ist wirklich nur ein Beispiel) und verwenden Sie einen benutzerdefinierten Anbieter verbindlich, die in der Lage ist, zu extrahieren, die Identität innerhalb der LTPA-token über ein "Anrufer". Schritte:
Erstellen Sie Benutzerdefinierte Richtlinie Bindungen
1) Klicken Sie auf "Services" > "Policy Sets" > "Allgemeine provider politischen Bindungen"
2) Wählen Sie das "Provider-Beispiel" verbindlichen " und klicken Sie auf "Kopieren..."
3) Geben Sie den Namen als "LTPA-Authentifizierte Anrufer" und klicken Sie auf OK
4) Klicken Sie auf "LTPA-Authentifizierte Anrufer" in der Liste der Bindungen
5) Klicken Sie auf "WS-Security", dann "Anrufer"
6) Klicken Sie auf "Neu" und geben Sie folgende Informationen ein (lassen Sie die anderen Felder leer)
Name: auth_ltpa
Anrufer-Identität lokaler Teil: LTPAv2
Identität des Anrufers namespace-URI: http://www.ibm.com/websphere/appserver/tokentype
Klicken Sie auf OK,
Zuweisen Politik Gesetzt und die Bindungen
1) Erweitern Sie die "Dienste", klicken Sie auf "Service Provider"
2) Klicken Sie auf "HTMJAXWSService"
3) Klicken Sie in das Kontrollkästchen wählen Sie die HTMJAXWSService Dienst in der Richtlinie Festgelegt ist, Anhänge-Liste, klicken Sie dann auf "LTPA-WSSecurity Standard" in den Anhängen festgelegten Richtlinie drop-down-Liste
4) Klicken Sie in das Kontrollkästchen wählen Sie die HTMJAXWSService Dienst in der Richtlinie Festgelegt ist, Anhänge-Liste, klicken Sie dann auf "LTPA-Authentifizierte Anrufer" in der Assign-Bindung drop-down-Liste
5) Speichern Sie alle änderungen an der master-Konfiguration.
Zuweisen Politik Gesetzt und die Bindungen
1) Erweitern Sie die "Dienste", klicken Sie auf "Service clients"
2) Klicken Sie auf die "HTMJAXWSService" link, wo der "Bereitgestellt asset" - Spalte entspricht dem Modul mit dem client, den Sie konfigurieren möchten
3) Klicken Sie in das Kontrollkästchen wählen Sie die HTMJAXWSService Dienst in der Richtlinie Festgelegt ist, Anhänge-Liste, klicken Sie dann auf "LTPA-WSSecurity Standard" in den Anhängen festgelegten Richtlinie drop-down-Liste. Sicherzustellen, dass diese Einstellung vererbt sich an alle untergeordneten Ebenen (D. H. der Hafen, und alle Methoden)
4) Klicken Sie in das Kontrollkästchen wählen Sie die HTMJAXWSService Dienst in der Richtlinie Festgelegt ist, Anhänge-Liste, klicken Sie dann auf "Standard" Zuweisen-Bindung drop-down-Liste
5) Speichern Sie alle änderungen an der master-Konfiguration
Abschluss
Sollte es nun möglich sein, rufen Sie von Ihrem Kunden durch, um die HTM-API unter Verwendung von LTPA-Authentifizierung. Um dies zu tun, Ihre client-Anwendung muss so konfiguriert werden, um entweder die eine Authentifizierung erfordern oder eine Authentifizierung für nicht authentifizierte URLs (letzteres wäre für Anwendungen geeignet, die erwarten, dass die SiteMinder-TAI pre-bevölkern eine authentifizierte Benutzer-Identität).
Hoffe, das hilft!