Udostępnij za pośrednictwem


Protokoły transakcji

Program Windows Communication Foundation (WCF) implementuje protokoły WS-Atomic Transaction i WS-Coordination.

Specyfikacja/dokument Wersja Link
Koordynacja WS 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

Współdziałanie tych specyfikacji protokołu jest wymagane na dwóch poziomach: między aplikacjami i między menedżerami transakcji (zobacz poniższą ilustrację). Specyfikacje opisują szczegółowo formaty komunikatów i wymianę komunikatów dla obu poziomów współdziałania. Niektóre zabezpieczenia, niezawodność i kodowanie wymiany aplikacji są stosowane w miarę ich stosowania w przypadku regularnej wymiany aplikacji. Jednak pomyślne współdziałanie między menedżerami transakcji wymaga umowy dotyczącej określonego powiązania, ponieważ zwykle nie jest skonfigurowane przez użytkownika.

W tym artykule opisano kompozycję specyfikacji WS-Atomic Transaction (WS-AT) z zabezpieczeniami i opisano bezpieczne powiązanie używane do komunikacji między menedżerami transakcji. Podejście opisane w tym artykule zostało pomyślnie przetestowane z innymi implementacjami usług WS-AT i WS-Coordination, w tym IBM, IONA, Sun Microsystems i innymi.

Na poniższej ilustracji przedstawiono współdziałanie dwóch menedżerów transakcji, Menedżer transakcji 1 i Menedżer transakcji 2 oraz dwie aplikacje, Application 1 i Application 2:

Screenshot that shows interaction between transaction managers.

Rozważ typowy scenariusz transakcji WS-Coordination/WS-Atomic Transaction z jednym inicjatorem (I) i jednym uczestnikiem (P). Zarówno inicjator, jak i uczestnik mają odpowiednio menedżerów transakcji (ITM i PTM). Zatwierdzenie dwufazowe jest określane jako 2PC w tym artykule.

  1. CreateCoordinationContext
  2. CreateCoordinationContextResponse
  3. Rejestrowanie (ukończenie)
  4. RegisterResponse
  5. Komunikat aplikacji
  6. CreateCoordinationContext z kontekstem
  7. Rejestrowanie (trwałe)
  8. RegisterResponse
  9. CreateCoordinationContextResponse
  10. Rejestrowanie (trwałe)
  11. RegisterResponse
  12. Odpowiedź komunikatu aplikacji
  13. Zatwierdzenie (ukończenie)
  14. Przygotowanie (2PC)
  15. Przygotowanie (2PC)
  16. Przygotowane (2PC)
  17. Przygotowane (2PC)
  18. Zatwierdzone (ukończenie)
  19. Zatwierdzenie (2PC)
  20. Zatwierdzenie (2PC)
  21. Zatwierdzone (2PC)
  22. Zatwierdzone (2PC)

Rysunek i tabela ilustrują cztery klasy komunikatów z punktu widzenia zabezpieczeń:

  • Komunikaty aktywacji (CreateCoordinationContext i CreateCoordinationContextResponse).

  • Komunikaty rejestracyjne (Register and RegisterResponse)

  • Komunikaty protokołu (przygotowanie, wycofanie, zatwierdzenie, przerwane itd.).

  • Komunikaty aplikacji.

Pierwsze trzy klasy komunikatów są traktowane jako komunikaty Menedżera transakcji, a ich konfiguracja powiązania jest opisana w sekcji "Wymiana komunikatów aplikacji" w dalszej części tego tematu. Czwarta klasa komunikatu to aplikacja do komunikatów aplikacji i została opisana w sekcji "Przykłady komunikatów" w dalszej części tego tematu. W tej sekcji opisano powiązania protokołu używane dla każdej z tych klas przez usługę WCF.

W tym dokumencie są używane następujące przestrzenie nazw XML i skojarzone prefiksy.

Prefiks Wersja Identyfikator URI przestrzeni nazw
s11 https://schemas.xmlsoap.org/soap/envelope/
Wsa Pre-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 Pre-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

Powiązania menedżera transakcji

R1001: Menedżerowie transakcji uczestniczący w transakcji WS-AT 1.0 muszą używać protokołu SOAP 1.1 i WS-Addressing 2004/08 dla wymiany komunikatów WS-Atomic Transaction i WS-Coordination.

R1002: Menedżerowie transakcji uczestniczący w transakcji WS-AT 1.1 muszą używać protokołu SOAP 1.1 i WS-Addressing 2005/08 dla wymiany komunikatów WS-Atomic Transaction i WS-Coordination.

Komunikaty aplikacji nie są ograniczone do tych powiązań i zostały opisane w dalszej części.

Powiązanie HTTPS menedżera transakcji

Powiązanie HTTPS menedżera transakcji opiera się wyłącznie na zabezpieczeniach transportu w celu osiągnięcia zabezpieczeń i ustanowienia zaufania między każdą parą nadawcy-odbiornika w drzewie transakcji.

Konfiguracja transportu HTTPS

Certyfikaty X.509 są używane do ustanawiania tożsamości menedżera transakcji. Wymagane jest uwierzytelnianie klienta/serwera, a autoryzacja klienta/serwera jest pozostawiona jako szczegóły implementacji:

  • R1111: Certyfikaty X.509 przedstawione za pośrednictwem przewodu muszą mieć nazwę podmiotu zgodną z w pełni kwalifikowaną nazwą domeny (FQDN) maszyny źródłowej.

  • B1112: System DNS musi działać między każdą parą nadawcy-odbiornika w systemie, aby sprawdzanie nazwy podmiotu X.509 powiodło się.

Konfiguracja powiązania aktywacji i rejestracji

WCF wymaga powiązania dwukierunkowego żądania/odpowiedzi z korelacją za pośrednictwem protokołu HTTPS. (Aby uzyskać więcej informacji na temat korelacji i opisów wzorców wymiany żądań/komunikatów odpowiedzi, zobacz WS-Atomic Transaction, Sekcja 8).

Konfiguracja powiązania protokołu 2PC

Program WCF obsługuje komunikaty jednokierunkowe (datagram) za pośrednictwem protokołu HTTPS. Korelacja między komunikatami jest pozostawiona jako szczegóły implementacji.

B1131: Implementacje muszą obsługiwać obsługę wsa:ReferenceParameters zgodnie z opisem w temacie WS-Addressing w celu osiągnięcia korelacji komunikatów 2PC programu WCF.

Powiązanie zabezpieczeń mieszanych menedżera transakcji

Jest to alternatywne powiązanie (tryb mieszany), które korzysta z zabezpieczeń transportu w połączeniu z modelem tokenu wystawionego przez koordynację usług WS na potrzeby tworzenia tożsamości. Aktywacja i rejestracja to jedyne elementy, które różnią się między dwoma powiązaniami.

Konfiguracja transportu HTTPS

Certyfikaty X.509 są używane do ustanawiania tożsamości menedżera transakcji. Wymagane jest uwierzytelnianie klienta/serwera, a autoryzacja klienta/serwera jest pozostawiona jako szczegóły implementacji.

Konfiguracja powiązania komunikatu aktywacji

Komunikaty aktywacji zwykle nie uczestniczą w współdziałaniu, ponieważ zazwyczaj występują między aplikacją a lokalnym Menedżerem transakcji.

B1221: WCF używa dwukierunkowego powiązania HTTPS (opisanego w artykule Messaging Protocols) dla komunikatów aktywacji. Komunikaty żądań i odpowiedzi są skorelowane przy użyciu adresowania WS-2004/08 dla usług WS-AT 1.0 i WS-Addressing 2005/08 dla usług WS-AT 1.1.

Specyfikacja transakcji niepodzielnej WS, sekcja 8, opisuje dalsze szczegóły korelacji i wzorców wymiany komunikatów.

  • R1222: Po otrzymaniu CreateCoordinationContextpolecenia koordynator musi wydać element ze skojarzonym wpisem SecurityContextToken tajnym STx. Ten token jest zwracany wewnątrz nagłówka t:IssuedTokens po specyfikacji WS-Trust.

  • R1223: Jeśli aktywacja występuje w istniejącym kontekście koordynacji, t:IssuedTokens nagłówek skojarzony z SecurityContextToken istniejącym kontekstem musi przepływać w CreateCoordinationContext komunikacie.

t:IssuedTokens Nowy nagłówek powinien zostać wygenerowany do dołączania do wiadomości wychodzącejwscoor:CreateCoordinationContextResponse.

Konfiguracja powiązania komunikatu rejestracji

B1231: WCF używa dwukierunkowego powiązania HTTPS (opisanego w artykule Messaging Protocols). Komunikaty żądań i odpowiedzi są skorelowane przy użyciu adresowania WS-2004/08 dla usług WS-AT 1.0 i WS-Addressing 2005/08 dla usług WS-AT 1.1.

WS-AtomicTransaction, sekcja 8, opisuje dalsze szczegóły dotyczące korelacji i opisów wzorców wymiany komunikatów.

R1232: Komunikaty wychodzące wscoor:Register muszą używać trybu uwierzytelniania opisanego IssuedTokenOverTransport w temacie Protokoły zabezpieczeń.

Element wsse:Timestamp musi być podpisany przy użyciu wystawionego elementu SecurityContextToken STx . Ten podpis jest dowodem posiadania tokenu skojarzonego z określoną transakcją i służy do uwierzytelniania uczestnika rejestracji w transakcji. Komunikat RegistrationResponse jest wysyłany z powrotem za pośrednictwem protokołu HTTPS.

Konfiguracja powiązania protokołu 2PC

Program WCF obsługuje komunikaty jednokierunkowe (datagram) za pośrednictwem protokołu HTTPS. Korelacja między komunikatami jest pozostawiona jako szczegóły implementacji.

B1241: Implementacje muszą obsługiwać obsługę wsa:ReferenceParameters zgodnie z opisem w temacie WS-Addressing w celu osiągnięcia korelacji komunikatów 2PC programu WCF.

Wymiana komunikatów aplikacji

Aplikacje mogą używać dowolnego określonego powiązania dla komunikatów aplikacji do aplikacji, o ile powiązanie spełnia następujące wymagania dotyczące zabezpieczeń:

  • R2001: Komunikaty aplikacji do aplikacji muszą przepływać t:IssuedTokens nagłówek wraz z CoordinationContext nagłówkiem komunikatu.

  • R2002: Należy podać integralność i poufność t:IssuedToken .

Nagłówek CoordinationContext zawiera wscoor:Identifierwartość . Chociaż definicja xsd:AnyURI umożliwia korzystanie zarówno z bezwzględnych, jak i względnych identyfikatorów URI, usługa WCF obsługuje tylko wscoor:Identifiersidentyfikatory URI bezwzględne, które są bezwzględnymi identyfikatorami URI.

B2003: Jeśli element wscoor:Identifier jest wscoor:CoordinationContext względnym identyfikatorem URI, błędy zostaną zwrócone z transakcyjnych usług WCF.

Przykłady komunikatów

CreateCoordinationContext Request/Response Messages

Następujące komunikaty są zgodne ze wzorcem żądania/odpowiedzi.

CreateCoordinationContext z funkcją 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 with WSCoor 1.1 (CreateCoordinationContext with 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 z elementami Trust Pre-1.3 i 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 with Trust 1.3 and 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>  

Komunikaty rejestracyjne

Następujące komunikaty to komunikaty rejestracyjne.

Rejestrowanie w aplikacji 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>  

Rejestrowanie w aplikacji 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>  

Rejestrowanie odpowiedzi za pomocą programu 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>  

Rejestrowanie odpowiedzi za pomocą programu 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>  

Komunikaty protokołu zatwierdzania dwufazowego

Poniższy komunikat odnosi się do protokołu zatwierdzania dwufazowego (2PC).

Zatwierdzanie za pomocą programu 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>  

Zatwierdzanie za pomocą programu 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>  

Komunikaty aplikacji

Następujące komunikaty to komunikaty aplikacji.

Żądanie komunikatu aplikacji

<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>