Selbst ausgestellte SAML-HoK-Token mit symmetrischem Schlüssel über WSS-APIs vom externen STS anfordern

Sie können an einen externen Sicherheitstokenservice (STS) die Anforderung senden, SAML-Token mit der Subjektbestätigungsmethode "Holder-of-Key" mit einem für einen Zielservice verschlüsselten symmetrischen Schlüssel auszustellen. Verwenden Sie das JAX-WS-Programmiermodell (Java™ API for XML-Based Web Services) und WSS-APIs (Web Services Security APIs), um diese Task auszuführen.

Vorbereitende Schritte

Für diese Task müssen Sie mit dem Programmiermodell JAX-WS, den WSS-APIs, mit SAML-Konzepten sowie mit Richtliniensätzen zum Konfigurieren und Verwalten von Web-Service-Einstellungen vertraut sein. Gehen Sie wie folgt vor, bevor Sie mit dieser Task beginnen:
  • Lesen Sie die Informationen zur Weitergabe von selbst ausgestellten SAML-HoK-Token mit symmetrischem Schlüssel über WSS-APIs.
  • Machen Sie sich damit vertraut, wie integrierte wichtige Funktionen in SAML-Token für den Nachrichtenschutz über WSS-APIs verwendet werden. Ihr Einsatzszenario setzt voraus, dass SAML-Token von einem externen STS angefordert und keine selbst ausgestellten SAML-Token verwendet werden.
  • Lesen Sie die Informationen zum Anfordern von SAML-Sender-Vouches-Token von einem externem STS zwecks Weitergabe über WSS-APIs mit Nachrichtenschutz.
  • Lesen Sie die Informationen zum Anfordern von SAML-Sender-Vouches-Token von einem externem STS zwecks Weitergabe über WSS-APIs mit Transportschutz.
  • Lesen Sie die Informationen zum Anfordern von SAML-Bearer-Token von einem externem STS zwecks Weitergabe über WSS-APIs mit Transportschutz.
  • Machen Sie sich damit vertraut, wie Sie über WSS-APIs auf einen externen STS zugreifen.

Informationen zu diesem Vorgang

Diese Task zeigt Beispielcode, mit dem SAML-Token mit der Subjektbestätigungsmethode "Holder-of-Key" und dem eingebetteten, für den Zielservice verschlüsselten symmetrischen Schlüssel, über WSS-APIs von einem externen STS angefordert werden. Diese Task konzentriert sich darauf, eine WS-Trust-Anforderungsnachricht an einen externen STS zu senden, um SAML-HoK-Token (Holder-of-Key) mit symmetrischen Schlüsseln anzufordern.

Vorgehensweise

  1. Geben Sie einen STS an, aus dem ein SAML-Sicherheitstoken, das die Subjektbestätigungsmethode "Holder-of-Key" enthält, angefordert werden soll. Beispiel:
    com.ibm.websphere.wssecurity.wssapi.WSSFactory factory =
        com.ibm.websphere.wssecurity.wssapi.WSSFactory.getInstance();
    WSSGenerationContext gencont1 = factory.newWSSGenerationContext();
    WSSConsumingContext concont1 = factory.newWSSConsumingContext();
    HashMap<Object, Object> cbackMap1 = new HashMap<Object, Object>();
    cbackMap1.put(SamlConstants.STS_ADDRESS, "https://www.example.com/sts");  // STS-URL
    cbackMap1.put(SamlConstants.SAML_APPLIES_TO, "http://myhost:9080/myService");  // Zielservice
    cbackMap1.put(IssuedTokenConfigConstants.TRUST_CLIENT_SOAP_VERSION, "1.1");
    cbackMap1.put(IssuedTokenConfigConstants.TRUST_CLIENT_WSTRUST_NAMESPACE, 
                      "http://docs.oasis-open.org/ws-sx/ws-trust/200512");
    cbackMap1.put(IssuedTokenConfigConstants.TRUST_CLIENT_COLLECTION_REQUEST,
                  "true");   //RST oder RSTC
    cbackMap1.put(SamlConstants.TOKEN_TYPE, 
                  "http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0");
    cbackMap1.put(SamlConstants.CONFIRMATION_METHOD, "holder-of-key");

    Wenn Sie ein SAML-HoK-Sicherheitstoken vom STS anfordern möchten, müssen Sie angeben, ob ein symmetrischer Schlüssel oder ein öffentlicher Schlüssel über das Element KeyType in einer Trust-Anforderung eingebettet werden soll. Für dieses Beispiel ist ein symmetrischer Schlüssel erforderlich, wie im nächsten Schritt beschrieben.

  2. Geben Sie den symmetrischen Schlüssel an, der in SAML-Sicherheitstoken eingebettet werden soll. Beispiel:
    cbackMap1.put(SamlConstants.KEY_TYPE,
                 "http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey");
    
    SAMLGenerateCallbackHandler cbHandler1 = new SAMLGenerateCallbackHandler(cbackMap1);
    cbHandler1.setWSSConsumingContextForTrustClient(concont1);
    cbHandler1.setWSSGenerationContextForTrustClient(gencont1);
    
    SecurityToken samlToken = factory.newSecurityToken(SAMLToken.class, cbHandler1, "system.wss.generate.saml");
    Das angeforderte SAML-Token enthält einen symmetrischen Schlüssel, der für den Zielservice verschlüsselt wird. Der STS gibt den unverschlüsselten Schlüssel über das Element WS-Trust RequestedProofToken zurück. Sehen Sie sich das folgende Beispiel an.
    				<wst:RequestedProofToken>
        				<wst:BinarySecret
          	xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
          wsu:Id="_27325D34CE4BCC83141288966548620">n68rFQba+XTZLNBfEc4prg==</wst:BinarySecret>
    </wst:RequestedProofToken>

    Das Element RequestedProofToken wird hier zu Ihrer Information angezeigt. Die detaillierte Verarbeitung ist für Benutzer der WSS-APIs nicht verfügbar. Das Element RequestedProofToken und der symmetrische Schlüssel werden von der WS-Security-Laufzeitumgebung, oder, genauer gesagt, von dem in der JAAS-Anmeldekonfiguration system.wss.geenrate.saml definierten SAMLGenerateLoginModule verarbeitet.

Ergebnisse

Sie haben sich mit wichtigen Bausteinen vertraut gemacht, die Sie benötigen, um SAML-Token mit der Subjektbestätigungsmethode "Holder-of-Key" und einem symmetrischen Schlüssel über WSS-APIs von einem externen STS anzufordern. Bevor Sie das SAML-Token zum Signieren von Anforderungsnachrichten verwenden, sollten Sie sich mit dem Beispielcode vertraut machen, der im Artikel "Selbst ausgestellte SAML-HoK-Token mit symmetrischem Schlüssel über WSS-APIs weitergeben" beschrieben wird.


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_configsamlhok_symmetric_sts_client
Dateiname:twbs_configsamlhok_symmetric_sts_client.html