Delen via


Transactieprotocollen

Windows Communication Foundation (WCF) implementeert WS-Atomic Transaction- en WS-Coordination-protocollen.

Specificatie/document Versie Verbinden
WS-Coordination 1.0

1.1
https://schemas.xmlsoap.org/ws/2004/10/wscoor/

https://docs.oasis-open.org/ws-tx/wscoor/2006/06
WS-AtomicTransaction 1.0

1.1
https://schemas.xmlsoap.org/ws/2004/10/wsat/

https://docs.oasis-open.org/ws-tx/wsat/2006/06

De interoperabiliteit van deze protocolspecificaties is vereist op twee niveaus: tussen toepassingen en tussen transactiebeheerders (zie de volgende afbeelding). Specificaties beschrijven in grote detail de berichtindelingen en berichtuitwisseling voor beide interoperabiliteitsniveaus. Bepaalde beveiliging, betrouwbaarheid en coderingen voor toepassings-naar-toepassingsuitwisseling zijn van toepassing op de gebruikelijke uitwisseling van toepassingen. Voor een succesvolle interoperabiliteit tussen transactiebeheerders is echter een overeenkomst vereist voor de specifieke binding, omdat deze meestal niet door de gebruiker wordt geconfigureerd.

In dit artikel wordt een samenstelling van de specificatie WS-Atomic Transaction (WS-AT) beschreven met beveiliging en wordt de beveiligde binding beschreven die wordt gebruikt voor communicatie tussen transactiemanagers. De aanpak die in dit artikel wordt beschreven, is getest met andere implementaties van WS-AT en WS-Coordination, waaronder IBM, IONA, Sun Microsystems en andere.

In de volgende afbeelding ziet u de interoperabiliteit tussen twee transactiemanagers, Transaction Manager 1 en Transaction Manager 2, en twee toepassingen, Toepassing 1 en Toepassing 2:

Schermopname van interactie tussen transactiebeheerders.

Overweeg een typisch scenario voor WS-Coördinatie/WS-Atomic Transactie met één initiator (I) en één deelnemer (P). Zowel initiator als deelnemer hebben respectievelijk Transaction Managers (ITM en PTM). Het tweefasencommit-protocol wordt in dit artikel aangeduid als 2PC.

  1. CreateCoordinationContext
  2. CreateCoordinationContextResponse
  3. Registreren (voltooiing)
  4. RegisterResponse
  5. Applicatiebericht
  6. CreateCoordinationContext met Context
  7. Registreren (duurzaam)
  8. RegisterResponse
  9. CreateCoordinationContextResponse
  10. Registreren (duurzaam)
  11. RegisterResponse
  12. Antwoord van toepassingsbericht
  13. Doorvoeren (voltooiing)
  14. Voorbereiden (2PC)
  15. Voorbereiden (2PC)
  16. Voorbereid (2PC)
  17. Voorbereid (2PC)
  18. Vastgelegd (voltooide)
  19. Doorvoeren (2PC)
  20. Doorvoeren (2PC)
  21. Vastgelegd (2PC)
  22. Vastgelegd (2PC)

In de afbeelding en tabel ziet u vier klassen berichten vanuit het oogpunt van beveiliging:

  • Activeringsberichten (CreateCoordinationContext en CreateCoordinationContextResponse).

  • Registratieberichten (Register en RegistratieRespons)

  • Protocolberichten (Voorbereiden, Terugdraaien, Doorvoeren, Afgebroken, enzovoort).

  • Toepassingsberichten.

De eerste drie berichtklassen worden beschouwd als Transaction Manager-berichten en hun bindingsconfiguratie wordt verderop in dit onderwerp beschreven in 'Application Message Exchange'. De vierde klasse van het bericht is toepassing op toepassingsberichten en wordt beschreven in de sectie Berichtvoorbeelden verderop in dit onderwerp. In deze sectie worden de protocolbindingen beschreven die worden gebruikt voor elk van deze klassen door WCF.

De volgende XML-naamruimten en bijbehorende voorvoegsels worden in dit document gebruikt.

Voorvoegsel Versie Naamruimte-URI
s11 https://schemas.xmlsoap.org/soap/envelope/
wsa Vóór 1.0

1.0
https://www.w3.org/2004/08/addressing

https://www.w3.org/2005/08/addressing/
wscoor 1.0

1.1
https://schemas.xmlsoap.org/ws/2004/10/wscoor/

https://docs.oasis-open.org/ws-tx/wscoor/2006/06
wsat 1.0

1.1
https://schemas.xmlsoap.org/ws/2004/10/wsat/

https://docs.oasis-open.org/ws-tx/wsat/2006/06
t Vóór 1.3

1.3
https://schemas.xmlsoap.org/ws/2005/02/trust/

https://docs.oasis-open.org/ws-sx/ws-trust/200512
o https://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
xsd https://www.w3.org/2001/XMLSchema

Transaction Manager-bindingen

R1001: Transaction Managers die deelnemen aan een WS-AT 1.0-transactie moeten SOAP 1.1 en WS-Addressing 2004/08 gebruiken voor WS-Atomic Transactie en WS-Coordination berichtuitwisseling.

R1002: Transaction Managers die deelnemen aan een WS-AT 1.1-transactie moeten SOAP 1.1 en WS-Addressing 2005/08 gebruiken voor WS-Atomic Transactie en WS-Coordination berichtuitwisseling.

Toepassingsberichten zijn niet beperkt tot deze bindingen en worden later beschreven.

HTTPS-binding voor Transaction Manager

De TRANSACTION Manager HTTPS-binding is uitsluitend afhankelijk van transportbeveiliging om beveiliging te bereiken en vertrouwen tussen elk afzender-ontvangerpaar in de transactiestructuur tot stand te brengen.

HTTPS-transportconfiguratie

X.509-certificaten worden gebruikt om Transaction Manager Identity tot stand te brengen. Client-/serververificatie is vereist en client-/serverautorisatie wordt overgelaten als implementatiedetails:

  • R1111: X.509-certificaten die via de kabel worden gepresenteerd, moeten een onderwerpnaam hebben die overeenkomt met de FQDN (Fully Qualified Domain Name) van de oorspronkelijke computer.

  • B1112: DNS moet functioneel zijn tussen elk afzender-ontvangerpaar in het systeem voor X.509 onderwerpnaamcontroles om te slagen.

Configuratie van activerings- en registratiebindingen

WCF vereist dubbelzijdige aanvraag-/antwoordbinding met correlatie via HTTPS. (Zie WS-Atomic Transactie, sectie 8 voor meer informatie over correlatie en beschrijvingen van de patronen voor het uitwisselen van aanvragen/antwoordenberichten.

2PC-protocolbindingsconfiguratie

WCF ondersteunt berichten in één richting (datagram) via HTTPS. Correlatie tussen de berichten wordt overgelaten als implementatiedetails.

B1131: Implementaties moeten wsa:ReferenceParameters ondersteunen zoals beschreven in WS-Addressing om de correlatie van WCF's 2PC-berichten te bereiken.

Gemengde beveiligingsbinding voor Transaction Manager

Dit is een alternatieve binding (gemengde modus) die gebruikmaakt van transportbeveiliging in combinatie met het WS-Coordination uitgegeven tokenmodel voor identiteitsinrichtingsdoeleinden. Activering en registratie zijn de enige elementen die verschillen tussen de twee bindingen.

HTTPS-transportconfiguratie

X.509-certificaten worden gebruikt om Transaction Manager Identity tot stand te brengen. Client-/serververificatie is vereist en client-/serverautorisatie wordt overgelaten als implementatiedetails.

Configuratie voor het binden van activeringsberichten

Activeringsberichten nemen meestal niet deel aan interoperabiliteit, omdat deze meestal plaatsvinden tussen een toepassing en de lokale Transaction Manager.

B1221: WCF maakt gebruik van duplex HTTPS-binding (beschreven in berichtenprotocollen) voor activeringsberichten. Aanvragen en antwoorden worden gecorreleerd met WS-Addressing 2004/08 voor WS-AT 1.0 en WS-Addressing 2005/08 voor WS-AT 1.1.

WS-Atomic transactiespecificatie, sectie 8, beschrijft meer informatie over correlatie en de patronen voor het uitwisselen van berichten.

  • R1222: Bij ontvangst van een CreateCoordinationContext, moet de coördinator een SecurityContextToken met het bijbehorende geheim STx uitgeven. Dit token wordt geretourneerd in een t:IssuedTokens header volgens WS-Trust specificatie.

  • R1223: Als de activering plaatsvindt binnen een bestaande coördinatiecontext, moet de t:IssuedTokens header met de SecurityContextToken bijbehorende bestaande context op het CreateCoordinationContext bericht stromen.

Er moet een nieuwe t:IssuedTokens koptekst worden gegenereerd voor het koppelen aan het uitgaande wscoor:CreateCoordinationContextResponse bericht.

Bindingsconfiguratie voor registratieberichten

B1231: WCF maakt gebruik van duplex HTTPS-binding (beschreven in berichtenprotocollen). Aanvragen en antwoorden worden gecorreleerd met WS-Addressing 2004/08 voor WS-AT 1.0 en WS-Addressing 2005/08 voor WS-AT 1.1.

WS-AtomicTransaction, sectie 8, beschrijft meer informatie over correlatie en beschrijvingen van de berichtuitwisselingspatronen.

R1232: Uitgaande wscoor:Register berichten moeten gebruikmaken van de IssuedTokenOverTransport verificatiemodus die wordt beschreven in beveiligingsprotocollen.

Het wsse:Timestamp element moet worden ondertekend met behulp van de uitgegeven SecurityContextToken STx. Deze handtekening is een bewijs van het bezit van het token dat is gekoppeld aan een bepaalde transactie en wordt gebruikt om een deelnemer die deel uitmaakt van de transactie te verifiëren. Het bericht RegistrationResponse wordt teruggestuurd via HTTPS.

2PC-protocolbindingsconfiguratie

WCF ondersteunt berichten in één richting (datagram) via HTTPS. Correlatie tussen de berichten wordt overgelaten als implementatiedetails.

B1241: Implementaties moeten wsa:ReferenceParameters ondersteunen zoals beschreven in WS-Addressing om de correlatie van WCF’s 2PC-berichten te bereiken.

Uitwisseling van toepassingsberichten

Toepassingen kunnen elke specifieke binding gebruiken voor toepassings-naar-toepassingsberichten, zolang de binding voldoet aan de volgende beveiligingsvereisten:

  • R2001: Berichten van toepassing naar toepassing moeten de t:IssuedTokens koptekst samen met de CoordinationContext koptekst in de header van het bericht bevatten.

  • R2002: Integriteit en vertrouwelijkheid van t:IssuedToken moeten worden verstrekt.

De CoordinationContext koptekst bevat wscoor:Identifier. Hoewel de definitie het xsd:AnyURI gebruik van zowel absolute als relatieve URI's toestaat, ondersteunt WCF alleen wscoor:Identifiers, wat absolute URI's zijn.

B2003: Als de wscoor:Identifier van de wscoor:CoordinationContext een relatieve URI is, worden fouten geretourneerd vanuit transactionele WCF-services.

Voorbeelden van berichten

CreateCoordinationContext Vraag-/Antwoordberichten

De volgende berichten volgen een aanvraag-/antwoordpatroon.

CreateCoordinationContext met WSCoor 1.0

<s:Envelope>  
  <s:Header>  
    <a:Action>http://.../ws/2004/10/wscoor/CreateCoordinationContext</Action>  
    <a:MessageID>urn:uuid:069f5104-fd88-4264-9f99-60032a82854e</MessageID>  
    <a:ReplyTo>  
      <Address>https://...</a:Address>  
    </a:ReplyTo>  
    <a:To>https://...</a:To>  
    <wsse:Security>  
      <u:Timestamp>  
        <wsu:Created>2005-12-15T23:36:09.921Z</wsu:Created>  
        <wsu:Expires>2005-12-15T23:41:09.921Z</wsu:Expires>  
      </u:Timestamp>  
    </wsse:Security>  
  </s:Header>  
  <s:Body xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">  
    <wscoor:CreateCoordinationContext>  
      <wscoor:CoordinationType>...</wscoor:CoordinationType>  
    </wscoor:CreateCoordinationContext>  
  </s:Body>  
</s:Envelope>  

CreateCoordinationContext met WSCoor 1.1

<s:Envelope>
  <s:Header>  
    <a:Action>http://docs.oasis-open.org/ws-tx/wscoor/2006/06/CreateCoordinationContext
    </a:Action>  
    <a:MessageID>urn:uuid:069f5104-fd88-4264-9f99-60032a82854e</MessageID>  
    <a:ReplyTo>
      <Address>https://...</a:Address>
    </a:ReplyTo>
    <a:To>https://...</a:To>
    <wsse:Security>  
      <u:Timestamp>  
        <wsu:Created>2005-12-15T23:36:09.921Z</wsu:Created>  
        <wsu:Expires>2005-12-15T23:41:09.921Z</wsu:Expires>  
      </u:Timestamp>
    </wsse:Security>
  </s:Header>
  <s:Body xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">  
    <wscoor:CreateCoordinationContext>  
      <wscoor:CoordinationType>...</wscoor:CoordinationType>  
    </wscoor:CreateCoordinationContext>  
  </s:Body>  
</s:Envelope>  

CreateCoordinationContextResponse met Trust Pre-1.3 en WSCoor 1.0

<s:Envelope>  
  <!-- Data below is shown in the clear for  
       illustration purposes only. -->  
  <s:Header>  
    <a:Action>./ws/2004/10/wscoor/CreateCoordinationContextResponse </a:Action>  
    <a:RelatesTo>urn:uuid:069f5104-fd88-4264-9f99-60032a82854e</a:RelatesTo>  
    <a:To s:mustUnderstand="1">https://... </a:To>  
    <t:IssuedTokens>  
 <wst:RequestSecurityTokenResponse
    xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"  
    xmlns:wssu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
    xmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust"  
    xmlns:wsc="http://schemas.xmlsoap.org/ws/2005/02/sc"  
    xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">  
    <wst:TokenType>http://schemas.xmlsoap.org/ws/2005/02/sc/sct</wst:TokenType>  
    <wst:RequestedSecurityToken>  
      <wsc:SecurityContextToken>  
        <wssu:Identifier>  
          http://fabrikam123.com/SCTi  
        </wssu:Identifier>  
      </wsc:SecurityContextToken>
    </wst:RequestedSecurityToken>  
    <wsp:AppliesTo>  
        http://fabrikam123.com/CCi  
    </wsp:AppliesTo>
    <wst:RequestedAttachedReference>  
      <wsse:SecurityTokenReference >  
        <wsse:Reference
           ValueType="http://schemas.xmlsoap.org/ws/2005/02/sc/sct"  
           URI="http://fabrikam123.com/SCTi"/>  
      </wsse:SecurityTokenReference>  
    </wst:RequestedAttachedReference>  
    <wst:RequestedUnattachedReference>  
      <wsse:SecurityTokenReference>  
        <wsse:Reference
          ValueType="http://schemas.xmlsoap.org/ws/2005/02/sc/sct"  
          URI="http://fabrikam123.com/SCTi"/>  
      </wsse:SecurityTokenReference>  
    </wst:RequestedUnattachedReference>  
    <wst:RequestedProofToken>  
      <wst:BinarySecret
        Type="http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey">  
        <!-- base64 encoded value -->  
      </wst:BinarySecret>  
    </wst:RequestedProofToken>  
    <wst:Lifetime>  
      <wssu:Created>2005-10-24T20:19:26.526Z</wssu:Created>  
      <wssu:Expires>2005-10-25T06:24:26.526Z</wssu:Expires>  
    </wst:Lifetime>  
    <wst:KeySize>256</wst:KeySize>  
</wst:RequestSecurityTokenResponse>  
    </t:IssuedTokens>  
    <o:Security xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">  
      <u:Timestamp u:Id="_0">  
        <u:Created>2005-12-15T23:36:12.015Z</u:Created>  
        <u:Expires>2005-12-15T23:41:12.015Z</u:Expires>  
      </u:Timestamp>  
    </o:Security>  
  </s:Header>  
  <s:Body>  
    <wscoor:CreateCoordinationContextResponse>  
      <wscoor:CoordinationContext>  
        <wscoor:Identifier>  
     http://fabrikam123.com/CCi  
      </wscoor:Identifier>  
        <wscoor:Expires>...</wscoor:Expires>  
        <wscoor:CoordinationType>...</wscoor:CoordinationType>  
        <wscoor:RegistrationService>  
          <a:Address>https://...</a:Address>  
          <a:ReferenceParameters>  
             ...  
          </a:ReferenceParameters>  
        </wscoor:RegistrationService>  
      </wscoor:CoordinationContext>  
    </wscoor:CreateCoordinationContextResponse>  
  </s:Body>  
</s:Envelope>  

CreateCoordinationContextResponse met Trust 1.3 en WSCoor 1.1

<s:Envelope>  
<!-- Data below is shown in the clear for illustration purposes only. -->
<s:Header>
<a:Action>http://docs.oasis-open.org/ws-tx/wscoor/2006/06/CreateCoordinationContextResponse </a:Action>  
<a:RelatesTo>urn:uuid:069f5104-fd88-4264-9f99-60032a82854e</a:RelatesTo>  
<a:To s:mustUnderstand="1">https://... </a:To>
<t:IssuedTokens>
<wst:RequestSecurityTokenResponse
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wssu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512"  
xmlns:wsc="http://schemas.xmlsoap.org/ws/2005/02/sc"  
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">  
<wst:TokenType>http://schemas.xmlsoap.org/ws/2005/02/sc/sct</wst:TokenType>  
<wst:RequestedSecurityToken>
<wsc:SecurityContextToken>
<wssu:Identifier> http://fabrikam123.com/SCTi  
</wssu:Identifier>
</wsc:SecurityContextToken>
</wst:RequestedSecurityToken>
<wsp:AppliesTo> http://fabrikam123.com/CCi </wsp:AppliesTo>  
<wst:RequestedAttachedReference>
<wsse:SecurityTokenReference >
<wsse:Reference  
  ValueType="http://schemas.xmlsoap.org/ws/2005/02/sc/sct"  
  URI="http://fabrikam123.com/SCTi"/>  
</wsse:SecurityTokenReference>
</wst:RequestedAttachedReference>
<wst:RequestedUnattachedReference>
<wsse:SecurityTokenReference>
<wsse:Reference  
 ValueType="http://schemas.xmlsoap.org/ws/2005/02/sc/sct"  
 URI="http://fabrikam123.com/SCTi"/>  
</wsse:SecurityTokenReference>
</wst:RequestedUnattachedReference>
<wst:RequestedProofToken>
<wst:BinarySecret  
  Type="http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey">  
  <!-- base64 encoded value -->
</wst:BinarySecret>
</wst:RequestedProofToken>
<wst:Lifetime>
<wssu:Created>2005-10-24T20:19:26.526Z</wssu:Created>  
<wssu:Expires>2005-10-25T06:24:26.526Z</wssu:Expires>  
</wst:Lifetime>
<wst:KeySize>256</wst:KeySize>
</wst:RequestSecurityTokenResponse>
</t:IssuedTokens>
<o:Security xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<u:Timestamp u:Id="_0">
<u:Created>2005-12-15T23:36:12.015Z</u:Created>
<u:Expires>2005-12-15T23:41:12.015Z</u:Expires>
</u:Timestamp>
</o:Security>
</s:Header>
<s:Body>
<wscoor:CreateCoordinationContextResponse>
<wscoor:CoordinationContext>
<wscoor:Identifier> http://fabrikam123.com/CCi  
</wscoor:Identifier>
<wscoor:Expires>...</wscoor:Expires>  
<wscoor:CoordinationType>...</wscoor:CoordinationType>  
<wscoor:RegistrationService>
<a:Address>https://...</a:Address>  
<a:ReferenceParameters> ...  
</a:ReferenceParameters>  
</wscoor:RegistrationService>
</wscoor:CoordinationContext>
</wscoor:CreateCoordinationContextResponse>
</s:Body>
</s:Envelope>  

Registratieberichten

De volgende berichten zijn registratieberichten.

Registreren bij WSCoor 1.0

<s:Envelope>  
  <s:Header>  
    <a:Action>http://schemas.xmlsoap.org/ws/2004/10/wscoor/Register</a:Action>  
    <a:MessageID>urn:uuid:ed418b86-a75e-4aea-9d4e-a5d0cb5c088e</a:MessageID>  
    <a:ReplyTo>  
      <a:Address>https://...</a:Address>
    </a:ReplyTo>  
    <a:To>https://...</a:To>  
    <wsse:Security
      s:mustUnderstand="1"
      xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"  
      xmlns:wssu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">  
      <wssu:Timestamp wssu:Id="_0" >  
        <wssu:Created>2005-12-15T23:36:13.827Z</wssu:Created>  
        <wssu:Expires>2005-12-15T23:41:13.827Z</wssu:Expires>  
      </wssu:Timestamp>  
      <wsc:SecurityContextToken>  
      <wssu:Identifier>  
          http://fabrikam123.com/SCTi  
      </wssu:Identifier>  
      </wsc:SecurityContextToken>  
      <!-- supporting signature over the timestamp -->  
      <wsse:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">  
        <ds:SignedInfo>  
          <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>  
          <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"/>  
          <ds:Reference URI="#_0">  
            <ds:Transforms>  
              <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>  
            </ds:Transforms>  
            <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>  
            <ds:DigestValue>  
              alRzyhjLgoUOYoh8cx4n75eTcUk=  
            </ds:DigestValue>  
          </ds:Reference>  
        </ds:SignedInfo>  
        <ds:SignatureValue>YZYjnVvSOVasAQqQxaaviTSWtqI=</ds:SignatureValue>  
        <ds:KeyInfo>  
          <wsse:SecurityTokenReference  
            xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">  
            <wsse:Reference
              URI="http://fabrikam123.com/SCTi"/>  
          </wsse:SecurityTokenReference>  
        </ds:KeyInfo>  
      </wsse:Signature>  
    </wsse:Security>  
  </s:Header>  
  <s:Body xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">  
    <wscoor:Register>  
      <wscoor:ProtocolIdentifier>...</wscoor:ProtocolIdentifier>  
      <wscoor:ParticipantProtocolService>  
        <a:Address>https://... </a:Address>  
      </wscoor:ParticipantProtocolService>  
    </wscoor:Register>  
  </s:Body>  
</s:Envelope>  

Registreren bij WSCoor 1.1

<s:Envelope>  
<s:Header>
<a:Action>http://docs.oasis-open.org/ws-tx/wscoor/2006/06/Register</a:Action>
<a:MessageID>urn:uuid:ed418b86-a75e-4aea-9d4e-a5d0cb5c088e</a:MessageID>  
<a:ReplyTo>
<a:Address>https://...</a:Address>
</a:ReplyTo>  
<a:To>https://...</a:To>
<wsse:Security
s:mustUnderstand="1"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wssu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">  
<wssu:Timestamp wssu:Id="_0" >
<wssu:Created>2005-12-15T23:36:13.827Z</wssu:Created>  
<wssu:Expires>2005-12-15T23:41:13.827Z</wssu:Expires>  
</wssu:Timestamp>
<wsc:SecurityContextToken>
<wssu:Identifier> http://fabrikam123.com/SCTi  
</wssu:Identifier>
</wsc:SecurityContextToken>
<!-- supporting signature over the timestamp -->  
<wsse:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">  
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"/>
<ds:Reference URI="#_0">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod  
Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue> alRzyhjLgoUOYoh8cx4n75eTcUk=  
</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>  
<ds:SignatureValue>YZYjnVvSOVasAQqQxaaviTSWtqI=  
</ds:SignatureValue>  
<ds:KeyInfo>
<wsse:SecurityTokenReference xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">  
  <wsse:Reference URI="http://fabrikam123.com/SCTi"/>  
</wsse:SecurityTokenReference>
</ds:KeyInfo>
</wsse:Signature>
</wsse:Security>
</s:Header>
<s:Body xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<wscoor:Register>
<wscoor:ProtocolIdentifier>...</wscoor:ProtocolIdentifier>  
<wscoor:ParticipantProtocolService>
<a:Address>https://... </a:Address>  
</wscoor:ParticipantProtocolService>
</wscoor:Register>
</s:Body>
</s:Envelope>  

Antwoord registreren bij WSCoor 1.0

<s:Envelope>  
  <s:Header>  
    <a:Action>  
      http://schemas.xmlsoap.org/ws/2004/10/wscoor/RegisterResponse  
    </a:Action>  
    <a:MessageID>urn:uuid:ed418b86-a75e-4aea-9d4e-a5d0cb5c088d</a:MessageID>  
    <a:RelatesTo>  
      urn:uuid:ed418b86-a75e-4aea-9d4e-a5d0cb5c088e
    </a:RelatesTo>  
    <a:To>https://...</a:To>  
    <wsse:Security
      s:mustUnderstand="1"
      xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"  
      xmlns:wssu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">  
      <wssu:Timestamp>  
        <wssu:Created>2005-12-15T23:36:13.827Z</wssu:Created>  
        <wssu:Expires>2005-12-15T23:41:13.827Z</wssu:Expires>  
      </wssu:Timestamp>  
    </wsse:Security>  
  </s:Header>  
  <s:Body xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">  
    <wscoor:RegisterResponse>  
      <wscoor:CoordinatorProtocolService>  
        <a:Address>https://...</a:Address>  
        <a:ReferenceParameters>  
          ...  
        </a:ReferenceParameters>  
      </wscoor:CoordinatorProtocolService>  
    </wscoor:RegisterResponse>  
  </s:Body>  
</s:Envelope>  

Antwoord registreren bij WSCoor 1.1

<s:Envelope>  
<s:Header>
<a:Action> http://docs.oasis-open.org/ws-tx/wscoor/2006/06/RegisterResponse  
</a:Action>
<a:MessageID>urn:uuid:ed418b86-a75e-4aea-9d4e-a5d0cb5c088d</a:MessageID>  
<a:RelatesTo> urn:uuid:ed418b86-a75e-4aea-9d4e-a5d0cb5c088e </a:RelatesTo>  
<a:To>https://...</a:To>
<wsse:Security
s:mustUnderstand="1"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wssu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wssu:Timestamp>
<wssu:Created>2005-12-15T23:36:13.827Z</wssu:Created>  
<wssu:Expires>2005-12-15T23:41:13.827Z</wssu:Expires>  
</wssu:Timestamp>
</wsse:Security>
</s:Header>
<s:Body xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<wscoor:RegisterResponse>
<wscoor:CoordinatorProtocolService>  
<a:Address>https://...</a:Address>  
<a:ReferenceParameters> ... </a:ReferenceParameters>  
</wscoor:CoordinatorProtocolService>
</wscoor:RegisterResponse>
</s:Body>
</s:Envelope>  

Berichten voor het twee-fasen commit-protocol

Het volgende bericht heeft betrekking op het tweefasen-commitprotocol (2PC).

Doorvoeren met WSAT 1.0

<s:Envelope>  
  <s:Header>  
    <a:Action>http://.../ws/2004/10/wsat/Commit</a:Action>  
    <a:To>https://...</a:To>  
    <wsse:Security
      s:mustUnderstand="1"
      xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"  
      xmlns:wssu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">  
      <wssu:Timestamp wssu:Id="_0" >  
        <wssu:Created>2005-12-15T23:36:13.827Z</wssu:Created>  
        <wssu:Expires>2005-12-15T23:41:13.827Z</wssu:Expires>  
      </wssu:Timestamp>  
   </wsse:Security>  
  </s:Header>  
  <s:Body xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">  
    <wsat:Commit />  
  </s:Body>  
</s:Envelope>  

Doorvoeren met WSAT 1.1

<s:Envelope>  
<s:Header>
<a:Action>http://docs.oasis-open.org/ws-tx/wsat/2006/06</a:Action>  
<a:To>https://...</a:To>
<wsse:Security
s:mustUnderstand="1"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wssu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wssu:Timestamp wssu:Id="_0" >
<wssu:Created>2005-12-15T23:36:13.827Z</wssu:Created>  
<wssu:Expires>2005-12-15T23:41:13.827Z</wssu:Expires>  
</wssu:Timestamp>
</wsse:Security>
</s:Header>
<s:Body xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<wsat:Commit />
</s:Body>
</s:Envelope>  

Applicatieberichten

De volgende berichten zijn toepassingsberichten.

Aanvraag voor toepassingsbericht

<s:Envelope>  
  <s:Header>  
<!-- Addressing headers, all signed-->  
    <wsse:Security s:mustUnderstand="1">  
      <wssu:Timestamp wssu:Id="timestamp">
        <wssu:Created>2005-10-25T06:29:18.703Z</wssu:Created>  
        <wssu:Expires>2005-10-25T06:34:18.703Z</wssu:Expires>  
      </wssu:Timestamp>  
      <wsse:BinarySecurityToken
          wssu:Id="IA_Certificate"
          ValueType="...#X509v3"
          EncodingType="...#Base64Binary">  
        <!-- IA certificate -->  
      </wsse:BinarySecurityToken>  
      <e:EncryptedKey Id="encrypted_key">  
            <!-- ephemeral key encrypted for PA certificate -->
        <e:ReferenceList xmlns:e="http://www.w3.org/2001/04/xmlenc#">  
          <e:DataReference URI="#encrypted_body"/>  
          <e:DataReference URI="#encrypted_CCi"/>  
          <e:DataReference URI="#encrypted_issuedtokens"/>  
        </e:ReferenceList>  
      </e:EncryptedKey>  
      <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">  
        <!-- signature over Addressing headers, Timestamp, and Body -->  
      </Signature>  
    </wsse:Security>  
    <wsse11:EncryptedHeader>  
     <!-- encrypted wscoor:CoordinationContext header containing CCi -->  
    </wsse11:EncryptedHeader>  
    <wsse11:EncryptedHeader>
      <!-- encrypted wst:IssuedTokens header containing SCTi -->  
      <!-- wst:IssuedTokens header is taken verbatim from message #2 above, omitted for brevity -->  
    </wsse11:EncryptedHeader>  
  </s:Header>  
  <s:Body wssu:Id="body">  
    <!-- encrypted content of the Body element of the application message -->
    <e:EncryptedData Id="encrypted_body"
           Type="http://www.w3.org/2001/04/xmlenc#Content"
           xmlns:e="http://www.w3.org/2001/04/xmlenc#">  
...  
    </e:EncryptedData>  
  </s:Body>  
</s:Envelope>