Tipps zur Fehlerbehebung bei Authentifizierung, Berechtigung und sicherem Transportprokoll von Web-Services
Web-Services werden auf der Basis der Spezifikation Web Services for Java™ Platform, Enterprise Edition (Java EE) entwickelt und implementiert. In diesem Artikel wird beschrieben, wie Sie beim Sichern von Web-Services Fehler bei der Authentifizierung und Berechtigung beheben.
Web-Services werden auf der Basis der Spezifikation Web Services for Java Platform, Enterprise Edition (Java EE) entwickelt und implementiert. In diesem Artikel wird beschrieben, wie Sie beim Sichern von Web-Services Fehler bei der Authentifizierung, der Berechtigung und dem Transportprotokoll beheben.
Ferne WSDL-Datei mit HTTPS-Transportprotokoll angeben
Wenn Ihre JAX-WS-Clientanwendung (Java API for XML-Based Web Services) eine ferne Adresse für die Position der WSDL-Datei angibt, die sichere Kommunikation über HTTPS erfordert, und Sie die SSL-Konfiguration nicht durchführen, wird eine Ausnahmebedingung ausgelöst. Wenn Sie den WSDL-URL mit dem HTTPS-Transportprotokoll angeben, müssen Sie die SSL-Konfiguration durchführen, bevor die Clientinstanz erstellt wird. Definieren Sie zum Konfigurieren von SSL die Systemeigenschaft com.ibm.SSL.ConfigURL als Namen der SSL-Konfiguration.
@WebServiceClient(name = "SampleService", targetNamespace = "http://jaxws.sample.websphere.ibm.com/",
wsdlLocation = "https://localhost:9443/Sample/SampleServicePort?WSDL")
public class SampleService
extends Service
{
private final static URL SAMPLESERVICE_WSDL_LOCATION;
static {
URL url = null;
try {
url = new URL("https://localhost:9080/Sample/SampleService?WSDL");
} catch (MalformedURLException e) {
e.printStackTrace();
}
SAMPLESERVICE_WSDL_LOCATION = url;
}
...
}
Weitere Informationen zur Definition dieser Systemeigenschaft finden Sie im Artikel "SSL-Konfiguration für Clients definieren" in der Dokumentation zur Clientkonfigurationsdatei ssl.client.props.
Authentifizierungsrisiko oder Berechtigungsfehler
Es kann ein Authentifizierungsrisiko oder Berechtigungsfehler auftreten, wenn Threads gewechselt werden. Eine Anwendung kann beispielsweise einen neuen Thread oder eine Raw-Socket-Verbindung zu einem Servlet öffnen. Threadwechsel werden von der Java EE-Spezifikation nicht empfohlen, weil die Informationen zum Sicherheitskontext lokal im Thread gespeichert werden. Bei einem Threadwechsel wird die authentifizierte Identität nicht vom lokalen an den neuen Thread übergeben. Deshalb stuft WebSphere Application Server die Identität als nicht authentifiziert ein. Wenn Sie einen neuen Thread erstellen müssen, muss der Sicherheitskontext an den neuen Thread weitergegeben werden. Dieser Prozess wird von WebSphere Application Server jedoch nicht unterstützt.
Eine Anwendung mit aktivierter Web Services Security kann nicht gestartet werden.
[6/19/03 11:13:02:976 EDT] 421fdaa2 KeyStoreKeyLo E WSEC5156E: Beim Abrufen des
Schlüssels aus dem KeyStore-Objekt ist eine Ausnahme eingetreten:
java.security.UnrecoverableKeyException: Given final block not properly padded
Zwischen Anwendungen der WebSphere Application Server Version 6.0.x und der Version 5.0.2 mit aktivierter Web Services Security ist keine Interoperabilität möglich.
Zwischen Anwendungen der WebSphere Application Server Version 6.0..x und der Version 5.0.2 mit aktivierter Web Services Security ist keine Interoperabilität möglich. Wenn die Anwendungen versuchen, zusammenzuarbeiten, wird der Fehler "digest mismatch" angezeigt. Im Kanonisierungsalgorithmus for die digitale XML-Signatur, die in Version 5.1 festgelegt ist, ist ein Fehler aufgetreten. Damit Web Services Security zwischen WebSphere Application Server Version 6 und Version 5.0.2 funktioniert, müssen Sie den Anwendungsserver der Version 5.0.2 aktualisieren. Dazu müssen Sie die Unterstützungswebsite von WebSphere Application Server aufrufen und das aktuellste Fixpack für WebSphere Application Server Version 5.0.2 herunterladen.