Selbst ausgestellte SAML-Sender-Vouches-Token über WSS-APIs mit SSL-Transportschutz senden

Sie können selbst ausgestellte SAML-Token mit der Subjektbestätigungsmethode Sender-Vouches erstellen und dann das Programmiermodel JAX-WS (Java™ API for XML-Based Web Services) und WSS-APIs (Web Services Security APIs) nutzen, um diese Token über Web-Service-Anforderungsnachrichten mit Transportschutz zu senden.

Vorbereitende Schritte

Für diese Task müssen Sie mit dem Programmiermodell JAX-WS, den WSS-APIs, mit SAML-Konzepten, mit dem SSL-Transportschutz sowie mit Richtliniensätzen zum Konfigurieren und Verwalten von Web-Service-Einstellungen vertraut sein.

Informationen zu diesem Vorgang

Sie können Ihren Web-Service-Client so erstellen, dass er SAML-Token mit der Subjektbestätigungsmethode Sender-Vouches in SOAP-Anforderungsnachrichten über die Web-Services-Security-Programmierschnittstellen verwendet. Die Verwendung der Programmierschnittstellen im Web-Service-Client für die Angabe der Verwendung von SAML-Token mit Sender-Vouches-Subjektbestätigung und Nachrichtenschutz auf Transportebene ist eine alternative Herangehensweise zur Nutzung von Richtliniensätzen und Bindungskonfigurationen.

Sie können ein selbst ausgestelltes SAML-Token erstellen und dieses dann in Web-Service-Anforderungsnachrichten von einem Web-Service-Client aus senden. Die für diese Task verwendete Web-Service-Clientanwendung ist eine modifizierte Version des Clientcodes in der Beispielanwendung JaxWSServicesSamples, die zum Download verfügbar ist. Im Prozedurenabschnitt sind Codeauszüge des Beispiels beschrieben. Im Abschnitt "Beispiel" finden Sie einen vollständigen, sofort einsatzfähigen Beispiel-Web-Service-Client.

Vorgehensweise

  1. Ermitteln Sie den Web-Service-Client, mit dem Sie einen Web-Service-Provider aufrufen möchten, und fordern Sie diesen Client an.

    Fügen Sie mit diesem Client über WSS-APIs programmgestützt SAML-Token in SOAP-Anforderungsnachrichten ein.

    Der in dieser Prozedur verwendete Web-Service-Client ist eine modifizierte Version des Clientcodes, der in der Web-Service-Beispielanwendung JaxWSServicesSamples enthalten ist.

    Führen Sie die folgenden Schritte aus, um den Beispiel-Web-Service-Client anzufordern und über WSS-APIs zu modifizieren, um SAML-Sender-Vouches-Token programmgesteuert in SOAP-Anforderungsnachrichten übergeben zu können:

    1. Laden Sie die Beispielanwendung JaxWSServicesSamples herunter. Das Beispiel JaxWSServicesSamples ist standardmäßig nicht installiert.
    2. Fordern Sie den Clientcode für JaxWSServicesSamples an.

      Zu Demonstrationszwecken verwendet diese Prozedur eine modifizierte Version des Thin-Client-Beispiels Echo, das Teil des Beispiels JaxWSServicesSamples ist. Die Datei SampleClient.java des Web Services Thin Client "Echo" befindet sich im Verzeichnis src\SampleClientSei\src\com\ibm\was\wssample\sei\cli. Die Beispielklassendatei ist in der Datei WSSampleClientSei.jar enthalten.

      Die Unternehmensanwendung JaxWSServicesSamples.ear und die unterstützenden JAR-Dateien (Java-Archiv) befinden sich im Verzeichnis installableApps in der Beispielanwendung "JaxWSServicesSamples".

    3. Implementieren Sie die Datei JaxWSServicesSamples.ear auf dem Anwendungsserver. Nachdem Sie die Datei JaxWSServicesSamples.ear implementiert haben, können Sie den Code des Beispiel-Web-Service-Clients anhand der Beispielanwendung testen.

    Anstatt den Beispiel-Web-Service-Client zu verwenden, können Sie auch die Codefragmente hinzufügen, um in Ihrer eigenen Web-Service-Clientanwendung SAML-Token über WSS-APIs programmgestützt in SOAP-Anforderungsnachrichten zu übergeben. Das Beispiel in dieser Prozedur nutzt einen Web Services Thin Client für JAX-WS. Sie können aber auch einen verwalteten Client verwenden.

  2. Erstellen Sie eine Kopie des Standardrichtliniensatzes SAML20 Bearer WSHTTPS oder the SAML11 Bearer WSHTTPS.

    Geben Sie einen Namen für die Kopie des Richtliniensatzes an, z. B. SAML20 SenderVouches WSHTTPS oder SAML11 SenderVouches WSHTTPS, damit Sie leichter erkennen können, dass dieser neue Richtliniensatz die Bestätigungsmethode Sender-Vouches verwendet.

    Weitere Änderungen an der neuen Richtliniendatei sind nicht erforderlich, weil die Subjektbestätigungsmethode in der Bindungskonfiguration und nicht in der Richtlinie angegeben wird.

    Die neue Richtliniendatei enthält die Richtlinien-ID SAMLToken20Bearer oder SAMLToken11Bearer. Ändern Sie die ID der Richtlinie SAMLToken20Bearer auf SAMLToken20SV oder die ID der Richtlinie SAMLToken11Bearer auf SAMLToken11SV, um einen wirklich beschreibenden Namen zu erhalten. Wenn Sie die ID der Richtlinie ändern, wird die Richtliniendurchsetzung davon nicht beeinflusst. Durch das Hinzufügen einer beschreibenden Kennung können Sie jedoch leichter erkennen, dass die Richtlinien mit einer solchen Kennung die Bestätigungsmethode Sender-Vouches verwenden.

    Sie können die Einstellungen dieser Richtlinien anzeigen. Führen Sie dazu die folgenden Schritte in der Administrationskonsole aus:
    1. Klicken Sie auf Services > Richtliniensätze > Anwendungsrichtliniensätze > Name_des_Richtliniensatzes.
    2. Klicken Sie in der Tabelle mit den Richtlinien auf die Richtlinie WS-Security.
    3. Klicken Sie auf den Link Hauptrichtlinie oder auf den Link Bootstraprichtlinie.
    4. Klicken Sie im Abschnitt "Richtliniendetails" auf Richtlinien für Anforderungstoken.
  3. Ordnen Sie den neuen Richtliniensatz SAML20 SenderVouches WSHTTPS oder SAML11 SenderVouches WSHTTPS der Web-Service-Provideranwendung zu. Lesen Sie hier, wie die Client- und Providerbindungen für das SAML-Sender-Vouches-Token konfiguriert werden, und erfahren Sie, wie dieser Richtliniensatz Ihrer Web-Service-Provideranwendung zugeordnet wird.
  4. Erstellen Sie eine Kopie der allgemeinen Standardbindungen von "SAML Bearer Provider sample".
    1. Geben Sie für die neue Kopie des Standardrichtliniensatzes einen Namen an, der "sender-vouches" enthält, z. B. SAML-Sender-Vouches-Providerbindung.
    2. Ändern Sie in der Tokenkonsumentenkonfiguration für die vorgesehene SAML-Tokenversion den Wert der Eigenschaft "confirmationMethod" in sender-vouches. Lesen Sie hier, wie die Client- und Providerbindungen für das SAML-Sender-Vouches-Token konfiguriert werden, und erfahren Sie, wie die Sender-Vouches-Bindungen modifiziert werden müssen, um der Bestätigungsanforderung gerecht zu werden.
  5. Weisen Sie die neue Providerbindung dem Providerbeispiel JaxWSServicesSamples zu. Lesen Sie hier, wie die Client- und Providerbindungen für SAML-Sender-Vouches konfiguriert werden, und erfahren Sie, wie die allgemeinen Standardbindungen des SAML-Sender-Vouches-Providerbeispiels Ihrer Web-Service-Provideranwendung zugeordnet werden.
  6. Aktivieren Sie das SSL-Konfigurationsattribut clientAuthentication des Web-Services-Providers, damit die Clientauthentifizierung mit X.509-Zertifikaten angefordert wird.
    Das Attribut "clientAuthentication" bestimmt, ob die SSL-Clientauthentifizierung erforderlich ist. Gehen Sie in der Administrationskonsole wie folgt vor, um das Attribut clientAuthentication anzugeben:
    1. Klicken Sie auf Sicherheit > Verwaltung von SSL-Zertifikaten und Schlüsseln > Sicherheitskonfiguration für Endpunkte verwalten > {Eingehend | Abgehend} > SSL-Konfiguration.
    2. Klicken Sie auf den Link WC_defaulthost_secure.
    3. Klicken Sie unter "Zugehörige Elemente" auf den Link SSL-Konfigurationen.
    4. Wählen Sie die Ressource NodeDefaultSSLSettings aus.
    5. Klicken Sie auf den Link Einstellungen für Datenschutzniveau.
    6. Wälen Sie im Menü Erforderlich aus, um die Clientauthentifizierung anzugeben.

    Informieren Sie sich hier, wie eine Secure-Sockets-Layer-Konfiguration erstellt wird und wie das Attribut clientAuthentication konfiguriert werden kann.

  7. Geben Sie im Web-Service-Clientcode mit der Methode CallService() die Eigenschaftendatei mit den Konfigurationsparametern an, die für die Generierung eines selbst ausgestellten SAML-Tokens erforderlich sind.

    Die Methode CallService() gibt Konfigurationsparameter an, die von der WS-Security-Laufzeitumgebung für die Generierung eines selbst ausgestellten SAML-Tokens benötigt werden.

    Das folgende Codefragment veranschaulicht die Verwendung der Methode CallService() zum Angeben der WS-Security-Konfigurationsparameter:
    public static void main(String[] args) {
      SampleSamlSVClient sample = new SampleSamlSVClient();
      sample.CallService();
     }
    
    /**
     	 * CallService-Parameter wurden gelesen. Jetzt können die Serviceproxyklassen aufgerufen werden.
     * 
     */
    void CallService() {
      String response = "ERROR!:";
      try  {    
        System.setProperty("java.security.auth.login.config", "Profilstammverzeichnis/properties/wsjaas_client.conf ");
        			// WSSFactory-Objekt initialisieren
        WSSFactory factory = WSSFactory.getInstance();
    
        // WSSGenerationContext initialisieren
        WSSGenerationContext gencont = factory.newWSSGenerationContext();
        // Konfiguration des SAML-Ausstellers über angepasste Eigenschaften initialisieren
        HashMap <Object, Object> customProps = new HashMap<Object,Object>();
    
        customProps.put(SamlConstants.ISSUER_URI_PROP, "example.com");
        customProps.put(SamlConstants.TTL_PROP, "3600000");
        customProps.put(SamlConstants.KS_PATH_PROP, "keystores/saml-provider.jceks");
        customProps.put(SamlConstants.KS_TYPE_PROP, "JCEKS");
        customProps.put(SamlConstants.KS_PW_PROP, "{xor}LCswLTovPiws");
        customProps.put(SamlConstants.KEY_ALIAS_PROP, "samlissuer");
        customProps.put(SamlConstants.KEY_NAME_PROP, "CN=SAMLIssuer, O=EXAMPLE");
        customProps.put(SamlConstants.KEY_PW_PROP, "{xor}NDomLz4sLA==");
        customProps.put(SamlConstants.TS_PATH_PROP, "keystores/saml-provider.jceks");
        customProps.put(SamlConstants.TS_TYPE_PROP, "JCEKS");
        customProps.put(SamlConstants.TS_PW_PROP, "{xor}LCswLTovPiws");  
        gencont.add(customProps); // Angepasste Eigenschaften hinzufügen

    Lesen Sie hier, wie ein SAML-Token bei seiner Erstellung konfiguriert wird, und erfahren Sie, wie Sie Konfigurationseigenschaften angeben können, um zu steuern, wie das Token konfiguriert wird.

  8. Fügen Sie zum Klassenpfad die JAR-Datei des Thin Client für JAX-WS hinzu. Fügen Sie die Datei Stammverzeichnis_des_Anwendungsservers/runtimes/com.ibm.jaxws.thinclient_8.5.0.jar zum Klassenpfad hinzu. Lesen Sie die Informationen zum Testen von Clients mit Unterstützung für Web Services, um zu erfahren, wie diese JAR-Datei zum Klassenpfad hinzugefügt wird.
  9. Erstellen Sie das selbst ausgestellte SAML-Token. Das folgende Codefragment veranschaulicht die Erstellung des SAML-Sender-Vouches-Tokens:
    // SAML-Token erstellen
    HashMap<Object, Object> map = new HashMap<Object, Object>();
    	map.put(SamlConstants.CONFIRMATION_METHOD, "sender-vouches");
    map.put(SamlConstants.TOKEN_TYPE, WSSConstants.SAML.SAML20_VALUE_TYPE);
    	map.put(SamlConstants.SAML_NAME_IDENTIFIER, "Alice");
    			map.put(SamlConstants.SIGNATURE_REQUIRED, "true");			
    			SAMLGenerateCallbackHandler callbackHandler = new SAMLGenerateCallbackHandler(map);				
    SecurityToken samlToken = factory.newSecurityToken(SAMLToken.class, callbackHandler, "system.wss.generate.saml");
    System.out.println("SAMLToken id = " + samlToken.getId());
    1. Geben Sie mit der Methode WSSFactory newSecurityToken an, wie das SAML-Token erstellt werden soll.
      Geben Sie folgende Methode an, um das SAML-Token zu erstellen:
      WSSFactory  newSecurityToken(SAMLToken.class, callbackHandler, "system.wss.generate.saml")
      Die Erstellung eines SAML-Tokens erfordert die Java-Sicherheitsberechtigung wssapi.SAMLTokenFactory.newSAMLToken. Verwenden Sie das Richtlinientool, um zu der Datei mit der Java-Sicherheitsrichtlinie oder der Datei was.policy des Anwendungsclients die folgende Richtlinienanweisung hinzuzufügen:
      permission java.security.SecurityPermission "wssapi.SAMLTokenFactory.newSAMLToken

      Der Parameter SAMLToken.class gibt den Typ des zu erstellenden Sicherheitstokens an.

      Das Objekt callbackHandler enthält Parameter, die die Merkmale des zu erstellenden SAML-Tokens definieren. Dieses Objekt zeigt auf ein Objekt SAMLGenerateCallbackHandler, das die in der folgenden Tabelle beschriebenen Konfigurationsparameter angibt:
      Tabelle 1. Eigenschaften von SAMLGenerateCallbackHandler. In der folgenden Tabelle sind die Konfigurationsparameter für das Objekt SAMLGenerateCallbackHandler bei Verwendung der Bestätigungsmethode Sender-Vouches beschrieben.
      Eigenschaft Beschreibung Erforderlich
      SamlConstants.CONFIRMATION_METHOD Gibt an, dass die Bestätigungsmethode sender-vouches verwendet werden soll Ja
      SamlConstants.TOKEN_TYPE

      Gibt mit dem Konstantenwert WSSConstants.SAML.SAML20_VALUE_TYPE einen SAML-2.0-Tokentyp an.

      Wenn einem Web-Service-Client Richtliniensätze zugeordnet sind, wird diese Eigenschaft nicht von der Web-Services-Security-Laufzeit verwendet. Geben Sie in diesem Szenario den Tokenwerttyp mit dem Attribut valueType der tokenGenerator-Bindungskonfiguration an.

      Das Beispiel in dieser Prozedur nutzt ein SAML-2.0-Token. Sie können aber auch den Wert WSSConstants.SAML.SAML11_VALUE_TYPE verwenden.

      Ja
      SamlConstants.SAML_NAME_IDENTIFIER

      Gibt eine Benutzeridentität wie myname als NameID-Wert des SAML-Tokens an

      Wenn Sie den Thin Client für JAX-WS verwenden und diesen Parameter nicht definieren, enthält der NameID-Wert keine sinnvollen Informationen.

      Wenn Sie einen verwalteten Web-Service-Client verwenden, z. B. eine Java-EE-Anwendung, die eine Web-Service-Anforderung aufruft, versucht die Web-Services-Security-Laufzeitumgebung, Informationen zur Benutzersicherheit aus dem Sicherheitskontext zu extrahieren. Wenn Sie einen verwalteten Web-Service-Client verwenden und diesen Parameter nicht definieren, enthält der NameID-Wert den Namen UNAUTHENTICATED.

      Diese Eigenschaft wird nicht verwendet, wenn Ihrem Web-Service-Client Richtliniensätze zugeordnet sind. Lesen Sie hier, wie SAML-Token gesendet werden, und erfahren Sie, wie ID und Attribute eines SAML-Tokens gesendet werden.

      Nein
      SamlConstants.SIGNATURE_REQUIRED

      Gibt an, ob der Aussteller das SAML-Token digital signieren muss

      Der Wert true gibt an, dass der Aussteller das SAML-Token digital signieren muss. Dieser Wert ist der Standardwert.

      Nein
      Der Parameter system.wss.generate.saml gibt das für die Erstellung des SAML-Tokens zu verwendende JAAS-Anmeldemodul (Java Authentication and Authorization Service) an. Sie müssen eine JVM-Eigenschaft angeben, um eine JAAS-Konfigurationsdatei mit der erforderlichen JAAS-Anmeldekonfiguration zu definieren. Beispiel:
      -Djava.security.auth.login.config=Profilstammverzeichnis/properties/wsjaas_client.conf 
      Alternativ können Sie eine Java-Systemeigenschaft im Beispielclientcode setzen, um eine JAAS-Anmeldekonfigurationsdatei anzugeben, z. B.
      System.setProperty("java.security.auth.login.config", "Profilstammverzeichnis/properties/wsjaas_client.conf ");
    2. Fordern Sie die Token-ID des erstellten SAML-Tokens an.
      Verwenden Sie als einfachen Test für das von Ihnen erstellte SAML-Token die folgende Anweisung:
      System.out.println("SAMLToken id = " + samlToken.getId())

Ergebnisse

Sie haben ein selbst ausgestelltes SAML-Token mit der Bestätigungsmethode Sender-Vouches und Transportschutz erstellt und dieses dann mit Web-Service-Anforderungsnachrichten über das JAX-WS-Programmiermodell und WSS-APIs gesendet.

Beispiel

Das folgende Codebeispiel ist eine vollständige, sofort einsatzfähige Web-Service-Clientanwendung, die veranschaulicht, wie ein selbst ausgestelltes SAML-Sender-Vouches-Token erstellt und in Web-Service-Anforderungsnachrichten gesendet wird. Dieser Beispielcode veranschaulicht die oben beschriebenen Prozedurschritte.

/**
 * Der folgende Quellcode ist von der IBM Corporation erstellter Beispielcode, der
 * mit der Einschränkung bereitgestellt wird, dass er nur zur Unterstützung für die Nutzung
 * der Technologie verwendet werden darf. Der Code wird ohne Wartung (auf "as-is"-Basis) und
 * ohne Gewährleistung zur Verfügung gestellt. IBM ist nicht haftbar für Schäden, die Ihnen aus
 * der Nutzung des Beispielcodes entstehen, selbst wenn IBM auf die Möglichkeit solche
 * Schäden hingewiesen wurde.
 */
package com.ibm.was.wssample.sei.cli;

import com.ibm.was.wssample.sei.echo.EchoService12PortProxy;
import com.ibm.was.wssample.sei.echo.EchoStringInput;

import com.ibm.websphere.wssecurity.wssapi.WSSFactory;
import com.ibm.websphere.wssecurity.wssapi.WSSGenerationContext;
import com.ibm.websphere.wssecurity.wssapi.WSSConsumingContext;
import com.ibm.websphere.wssecurity.wssapi.WSSTimestamp;
import com.ibm.websphere.wssecurity.callbackhandler.SAMLGenerateCallbackHandler;
import com.ibm.websphere.wssecurity.wssapi.token.SAMLToken;
import com.ibm.websphere.wssecurity.wssapi.token.SecurityToken;
import com.ibm.wsspi.wssecurity.core.token.config.WSSConstants;
import com.ibm.wsspi.wssecurity.saml.config.SamlConstants;

import java.util.Map;
import java.util.HashMap;

import javax.xml.ws.BindingProvider;

public class SampleSamlSVClient {
  	private String urlHost = "localhost";
  	private String urlPort = "9081";
  private static final String CONTEXT_BASE = "/WSSampleSei/";
  private static final String ECHO_CONTEXT12 = CONTEXT_BASE+"EchoService12";  
  private String message = "HELLO";
  	private String uriString = "http://" + urlHost + ":" + urlPort;
  private String endpointURL = uriString + ECHO_CONTEXT12;
  private String input = message;

  /**
   * main()
   * 
   * Befehlszeilenargumente siehe printusage()
   * 
   * @param args
   */
  public static void main(String[] args) {
    SampleSamlSVClient sample = new SampleSamlSVClient();
    sample.CallService();
  }

  /**
   	 * CallService-Parameter wurden gelesen. Jetzt können die Serviceproxyklassen aufgerufen werden.
   * 
   */
  void CallService() {
    String response = "ERROR!:";
    try  {    
      System.setProperty("java.security.auth.login.config", "Profilstammverzeichnis/properties/wsjaas_client.conf ");

      			// WSSFactory-Objekt initialisieren
      WSSFactory factory = WSSFactory.getInstance();
      // WSSGenerationContext initialisieren
      WSSGenerationContext gencont = factory.newWSSGenerationContext();
      // Konfiguration des SAML-Ausstellers über angepasste Eigenschaften initialisieren
	    HashMap<Object, Object> customProps = new HashMap<Object,Object>();

      customProps.put(SamlConstants.ISSUER_URI_PROP, "example.com");
      customProps.put(SamlConstants.TTL_PROP, "3600000");
      customProps.put(SamlConstants.KS_PATH_PROP, "keystores/saml-provider.jceks");
      customProps.put(SamlConstants.KS_TYPE_PROP, "JCEKS");
      customProps.put(SamlConstants.KS_PW_PROP, "{xor}LCswLTovPiws");
      customProps.put(SamlConstants.KEY_ALIAS_PROP, "samlissuer");
      customProps.put(SamlConstants.KEY_NAME_PROP, "CN=SAMLIssuer, O=EXAMPLE");
      customProps.put(SamlConstants.KEY_PW_PROP, "{xor}NDomLz4sLA==");
      customProps.put(SamlConstants.TS_PATH_PROP, "keystores/saml-provider.jceks");
      customProps.put(SamlConstants.TS_TYPE_PROP, "JCEKS");
      customProps.put(SamlConstants.TS_PW_PROP, "{xor}LCswLTovPiws");  
      gencont.add(customProps); // Angepasste Eigenschaften hinzufügen

      // SAML-Token erstellen
      HashMap<Object, Object> map = new HashMap<Object, Object>();
      	map.put(SamlConstants.CONFIRMATION_METHOD, "sender-vouches");
      map.put(SamlConstants.TOKEN_TYPE, WSSConstants.SAML.SAML20_VALUE_TYPE);
      	map.put(SamlConstants.SAML_NAME_IDENTIFIER, "Alice");
      			map.put(SamlConstants.SIGNATURE_REQUIRED, "true");			
      			SAMLGenerateCallbackHandler callbackHandler = new SAMLGenerateCallbackHandler(map);				
      SecurityToken samlToken = factory.newSecurityToken(SAMLToken.class, callbackHandler, "system.wss.generate.saml");

      System.out.println("SAMLToken id = " + samlToken.getId());

      // Web-Service-Client initialisieren
      EchoService12PortProxy echo = new EchoService12PortProxy();
      echo._getDescriptor().setEndpoint(endpointURL);

      // SOAPAction-Eigenschaften konfigurieren
      BindingProvider bp = (BindingProvider) (echo._getDescriptor().getProxy());
      Map<String, Object> requestContext = bp.getRequestContext();
      requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL);
      requestContext.put(BindingProvider.SOAPACTION_USE_PROPERTY,	Boolean.TRUE);
      requestContext.put(BindingProvider.SOAPACTION_URI_PROPERTY, "echoOperation");

      gencont.add(samlToken);	
      // Zeitmarke hinzufügen
      WSSTimestamp timestamp = factory.newWSSTimestamp();
      gencont.add(timestamp);

      gencont.process(requestContext);

      // Eingabeobjekt erstellen
      EchoStringInput echoParm = 
          new com.ibm.was.wssample.sei.echo.ObjectFactory().createEchoStringInput();
      echoParm.setEchoInput(input);
      System.out.println(">> CLIENT: SEI Echo to " + endpointURL);

      	// Verarbeitung der Zeitmarke in der Antwortnachricht vorbereiten
      WSSConsumingContext concont = factory.newWSSConsumingContext();
      concont.add(WSSConsumingContext.TIMESTAMP); 
      concont.process(requestContext);

      // Service aufrufen
      response = echo.echoOperation(echoParm).getEchoResponse();

      System.out.println(">> CLIENT: SEI Echo invocation complete.");
      System.out.println(">> CLIENT: SEI Echo response is: " + response);
    } catch (Exception e)  {
      System.out.println(">> CLIENT: ERROR: SEI Echo EXCEPTION.");
      e.printStackTrace();
    }
  }
}
Wenn diese Beispiel-Web-Service-Clientanwendung ordnungsgemäß ausgeführt wird, empfangen Sie Nachrichten wie die folgenden:
SAMLToken id = _6CDDF0DBF91C044D211271166233407
Retrieving document at 'file:Profilstammverzeichnis/.../wsdl/'.
>> CLIENT: SEI Echo to http://localhost:9443/WSSampleSei/EchoService12
>> CLIENT: SEI Echo invocation complete.
>> CLIENT: SEI Echo response is: SOAP12==>>HELLO

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=twbs_configsamlsendervouches_transportlevel_usingwssapi
Dateiname:twbs_configsamlsendervouches_transportlevel_usingwssapi.html