Pemetaan Metadata
Isi dokumen metadata dipetakan ke API metadata dengan cara-cara yang dijelaskan di bagian berikut.
Awalan namespace berikut digunakan di seluruh dokumentasi ini:
wsdl => http://schemas.xmlsoap.org/wsdl/
soap11 => http://schemas.xmlsoap.org/wsdl/soap/
soap12 => http://schemas.xmlsoap.org/wsdl/soap12/
wsa09 => http://schemas.xmlsoap.org/ws/2004/08/addressing
wsa10 => http://www.w3.org/2005/08/addressing
wsa09p => http://schemas.xmlsoap.org/ws/2004/08/addressing/policy
wsa10p => http://www.w3.org/2006/05/addressing/wsdl
binp => http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1
mtomp => http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization
sp => http://schemas.xmlsoap.org/ws/2005/07/securitypolicy
wsp => http://schemas.xmlsoap.org/ws/2004/09/policy
netf => http://schemas.microsoft.com/ws/2006/05/framing/policy
httpp => http://schemas.microsoft.com/ws/06/2004/policy/http
wst10 => http://schemas.xmlsoap.org/ws/2005/02/trust
wsi => http://schemas.xmlsoap.org/ws/2005/05/identity
Bagian berikutnya menjelaskan konstruksi API bersama dengan konstruksi metadata apa (WSDL atau Kebijakan) yang sesuai dengannya.
Keakraban dengan spesifikasi metadata seperti WSDL dan Kebijakan akan membantu memahami bagian ini.
Alamat titik akhir
Alamat titik akhir (lihat WS_ENDPOINT_ADDRESS) diperoleh dari elemen ekstensibilitas dalam elemen wsdl:port dari dokumen WSDL. Elemen ekstensibilitas berikut didukung untuk menentukan alamat:
<wsdl:port...>
<soap11:address.../>
</wsdl:port>
<wsdl:port...>
<soap12:address.../>
</wsdl:port>
<wsdl:port...>
<wsa09:EndpointReference.../>
</wsdl:port>
<wsdl:port...>
<wsa10:EndpointReference.../>
</wsdl:port>
WS_CHANNEL_BINDING
Pengikatan saluran (lihat WS_CHANNEL_BINDING) ditentukan oleh pengikatan sabun yang digunakan, sebagai berikut:
<soap:binding transport="http://schemas.microsoft.com/soap/tcp"/> => WS_TCP_CHANNEL_BINDING
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/> => WS_HTTP_CHANNEL_BINDING
WS_CHANNEL_PROPERTY_ENVELOPE_VERSION
Versi amplop (lihat WS_CHANNEL_PROPERTY_ENVELOPE_VERSION) ditentukan oleh pengikatan sabun mana yang digunakan, sebagai berikut:
<wsdl:binding...>
<soap11:binding.../> => WS_ENVELOPE_VERSION_SOAP_1_1
</wsdl:binding>
<wsdl:binding...>
<soap12:binding.../> => WS_ENVELOPE_VERSION_SOAP_1_2
</wsdl:binding>
Versi Alamat
Versi pengalamatan (lihat WS_CHANNEL_PROPERTY_ADDRESSING_VERSION) ditentukan oleh pernyataan berikut dalam kebijakan titik akhir:
<wsp:Policy...>
<wsa09p:UsingAddressing.../> => WS_ADDRESSING_VERSION_0_9
</wsp:Policy>
<wsp:Policy...>
<wsa10p:UsingAddressing.../> => WS_ADDRESSING_VERSION_1_0
</wsp:Policy>
Jika pernyataan alamat tidak ada, maka WS_ADDRESSING_VERSION_TRANSPORT diasumsikan.
Pengodean Pesan
Pengodean pesan (lihat WS_CHANNEL_PROPERTY_ENCODING) ditentukan oleh pernyataan berikut dalam kebijakan titik akhir:
<wsp:Policy...>
<binp:BinaryEncoding.../> => WS_ENCODING_XML_BINARY_SESSION_1, WS_ENCODING_XML_BINARY_1
</wsp:Policy>
Perhatikan bahwa pernyataan kebijakan pengodean biner tidak menyertakan informasi tentang apakah pengodean biner bersifat sesi atau tanpa sesi. Ini ditentukan oleh batasan properti pengodean (yang harus sesuai dengan apakah WS_CHANNEL_TYPE yang digunakan bersifat sesi atau tidak).
<wsp:Policy...>
<mtomp:OptimizedMimeSerialization.../> => WS_ENCODING_XML_MTOM_UTF8, WS_ENCODING_XML_MTOM_UTF16LE, WS_ENCODING_XML_MTOM_UTF16BE
</wsp:Policy>
Jika tidak ada pernyataan di atas, maka pengodean teks digunakan: WS_ENCODING_XML_UTF8, WS_ENCODING_XML_UTF16LE, WS_ENCODING_XML_UTF16BE.
Perhatikan bahwa kebijakan tidak menyertakan informasi tentang karakter yang ditetapkan untuk pengodean MTOM atau teks (baik UTF8, UTF16LE, atau UTF16BE). Nilai set karakter aktual yang digunakan ditentukan oleh batasan properti pengkodean.
Batasan dengan Autentikasi Header HTTP
Bagian ini berlaku ketika batasan pengikatan keamanan WS_HTTP_HEADER_AUTH_SECURITY_BINDING_CONSTRAINT ditentukan.
Pengikatan keamanan ini ditunjukkan dalam kebijakan oleh pernyataan yang berbeda yang menyatakan bahwa autentikasi header HTTP harus digunakan, dan bahwa skema autentikasi tertentu harus digunakan. Pernyataan kebijakan berkaitan dengan nilai-nilai dari WS_SECURITY_BINDING_PROPERTY_HTTP_HEADER_AUTH_SCHEME sebagai berikut:
<wsp:Policy...>
<httpp:BasicAuthentication.../> => WS_HTTP_HEADER_AUTH_SCHEME_BASIC
</wsp:Policy>
<wsp:Policy...>
<httpp:NegotiateAuthentication.../> => WS_HTTP_HEADER_AUTH_SCHEME_NEGOTIATE
</wsp:Policy>
<wsp:Policy...>
<httpp:NtlmAuthentication.../> => WS_HTTP_HEADER_AUTH_SCHEME_NTLM
</wsp:Policy>
<wsp:Policy...>
<httpp:DigestAuthentication.../> => WS_HTTP_HEADER_AUTH_SCHEME_DIGEST
</wsp:Policy>
Batasan dengan Keamanan Transportasi SLL
Bagian ini berlaku ketika batasan pengikatan keamanan WS_SSL_TRANSPORT_SECURITY_BINDING_CONSTRAINT ditentukan. Pernyataan kebijakan berikut digunakan dalam kasus ini:
<wsp:Policy...>
<sp:TransportBinding...>
<wsp:Policy...>
<sp:TransportToken...>
<wsp:Policy...>
<sp:HttpsToken.../>
</wsp:Policy...>
</wsp:Policy>
</sp:TransportBinding...>
</wsp:Policy>
Batasan pada Keamanan Transport SSPI
Bagian ini berlaku ketika batasan pengikatan keamanan WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_CONSTRAINT ditentukan. Pernyataan kebijakan berikut digunakan dalam kasus ini:
<wsp:Policy...>
<sp:TransportBinding...>
<wsp:Policy...>
<sp:TransportToken...>
<wsp:Policy...>
<netf:WindowsTransportSecurity.../>
</wsp:Policy...>
</wsp:Policy>
</sp:TransportBinding...>
</wsp:Policy>
Kendala dalam Keamanan Transportasi
Batasan properti WS_SECURITY_PROPERTY_TRANSPORT_PROTECTION_LEVEL dapat ditentukan jika salah satu batasan pengikatan keamanan ditentukan:
WS_SSL_TRANSPORT_SECURITY_BINDING_CONSTRAINT
Nilai dari kebijakan selalu WS_PROTECTION_LEVEL_SIGN_AND_ENCRYPT.
WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_CONSTRAINT
Nilai dari kebijakan ditentukan sebagai bagian dari pernyataan WindowsTransportSecurity, sebagai berikut:
<netf:WindowsTransportSecurity...>None</netf:WindowsTransportSecurity> => WS_PROTECTION_LEVEL_NONE
<netf:WindowsTransportSecurity...>Sign</netf:WindowsTransportSecurity> => WS_PROTECTION_LEVEL_SIGN
<netf:WindowsTransportSecurity...>EncryptAndSign</netf:WindowsTransportSecurity> => WS_PROTECTION_LEVEL_SIGN_AND_ENCRYPT
WS_HTTP_HEADER_AUTH_SECURITY_BINDING_CONSTRAINT
Nilai dari kebijakan selalu WS_PROTECTION_LEVEL_NONE.
Batasan dengan Pengikatan Keamanan APREQ Kerberos
Bagian ini berlaku ketika batasan pengikatan keamanan WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_CONSTRAINT ditentukan. Pernyataan kebijakan berikut digunakan dalam kasus ini:
<sp:EndorsingSupportingTokens...>
<wsp:Policy>
<sp:KerberosToken>
<WssGssKerberosV5ApReqToken11.../>
</sp:KerberosToken>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
Batasan dengan Pengikatan Keamanan Pesan
Bagian ini berlaku ketika batasan pengikatan keamanan WS_USERNAME_MESSAGE_SECURITY_BINDING_CONSTRAINT ditentukan. Pernyataan kebijakan berikut digunakan dalam kasus ini:
<sp:SignedSupportingTokens>
<wsp:Policy>
<sp:UsernameToken.../>
</wsp:Policy>
</sp:SignedSupportingTokens>
WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT
Bagian ini berlaku ketika batasan pengikatan keamanan WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT ditentukan. Pernyataan kebijakan berikut digunakan dalam kasus ini:
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:X509Token.../>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
Pengikatan Keamanan Pesan WS_DITERBITKAN_TOKEN_CONSTRAINT
Bagian ini berlaku ketika batasan pengikatan keamanan WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT ditentukan. Pernyataan kebijakan berikut digunakan dalam kasus ini:
<sp:EndorsingSupportingTokens...>
<wsp:Policy>
<sp:IssuedToken sp:IncludeToken="xs:anyURI"? ...="" >
<wsp:Issuer>...</wsp:Issuer>?
<wsp:RequestSecurityTokenTemplate TrustVersion='xs:anyURI"?>
...
<wst10:Claims>
<wsi:ClaimType Optional='xs:boolean'?>xs:anyURI<wt:ClaimType>*
</wst10:Claims>
...
</wsp:RequestSecurityTokenTemplate>
<wsp:Policy>
<sp:RequireDerivedKeys/> ?
<sp:RequireExternalReference/> ?
<sp:RequireInternalReference/> ?
</wsp:Policy> ?
</sp:IssuedToken>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
Berikut ini menjelaskan pemetaan bidang WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT ke kebijakan di atas:
Bidang claimConstraints digunakan untuk memverifikasi kumpulan URI jenis klaim yang muncul dalam elemen wsi:ClaimType di atas.
Bidang issuerAddress sesuai dengan elemen wsp:Issuer di atas, yang merupakan WS_ENDPOINT_ADDRESS layanan yang dapat mengeluarkan token.
Bidang requestSecurityTokenTemplate sesuai dengan elemen turunan elemen wsp:RequestSecurityTokenTemplate.
WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_CONSTRAINT
Bagian ini berlaku ketika batasan pengikatan keamanan WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_CONSTRAINT ditentukan. Pernyataan kebijakan berikut digunakan dalam kasus ini:
<sp:EndorsingSupportingTokens...>
<wsp:Policy>
<sp:SecureConversationToken sp:IncludeToken="xs:anyURI"? ...="" >
<wsp:Issuer>...</wsp:Issuer>?
<wsp:Policy>
<sp:RequireDerivedKeys.../>?
<sp:RequireExternalUriReference.../>?
<sp:SC10SecurityContextToken.../>? => WS_SECURE_CONVERSATION_VERSION_FEBRUARY_2005
<sp:BootstrapPolicy... >?
<wsp:Policy> ... </wsp:Policy> => WS_SECURITY_CONSTRAINTS
</sp:BootstrapPolicy>
</wsp:Policy>
</wsp:SecureConversationToken>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
Mode entropi ditentukan oleh pernyataan><sp:Trust10. <sp:RequireClientEntropy/> dan <sp:RequireServerEntropy/> =>WS_SECURITY_KEY_ENTROPY_MODE_COMBINED<sp:RequireClientEntropy/> =>WS_SECURITY_KEY_ENTROPY_MODE_CLIENT_ONLY<sp:RequireServerEntropy/> =>WS_SECURITY_KEY_ENTROPY_MODE_SERVER_ONLY
WS_REQUEST_SECURITY_TOKEN_PROPERTY_VERSI_KEPERCAYAAN
Bagian ini berlaku ketika batasan pengikatan keamanan WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT ditentukan. Pernyataan kebijakan berikut digunakan untuk mengidentifikasi opsi WS_TRUST_VERSION dan terkait.
<sp:Trust10> => WS_TRUST_VERSION_FEBRUARY_2005
<sp:Policy>
<sp:MustSupportClientChallenge/> ?
<sp:MustSupportServerChallenge/> ?
<sp:RequireClientEntropy/> ?
<sp:RequireServerEntropy/> ?
<sp:MustSupportIssuedTokens/> ?
</sp:Policy>
</sp:Trust10>
Versi kepercayaan dapat ditentukan menggunakan WS_REQUEST_SECURITY_TOKEN_PROPERTY_CONSTRAINT dengan properti id WS_REQUEST_SECURITY_TOKEN_PROPERTY_TRUST_VERSION.
WS_SECURITY_PROPERTY_SECURITY_HEADER_VERSION
Bagian ini berlaku ketika salah satu batasan pengikatan berikut digunakan:
- WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_USERNAME_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_ISSUED_TOKEN_PESAN_KEAMANAN_BINDING_KONSTRIKSI
Versi keamanan header (seperti yang ditentukan oleh WS_SECURITY_PROPERTY_SECURITY_HEADER_VERSION) ditentukan oleh salah satu pernyataan kebijakan berikut:
<wsp:Wss10> ... </wsp:Wss10> => WS_SECURITY_HEADER_VERSION_1_0
<wsp:Wss11> ... </wsp:Wss11> => WS_SECURITY_HEADER_VERSION_1_1
Pembatasan pada Tata Letak Keamanan Header
Bagian ini berlaku ketika salah satu batasan pengikatan berikut digunakan:
- WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_USERNAME_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT
Tata letak header keamanan (seperti yang ditentukan oleh WS_SECURITY_PROPERTY_SECURITY_HEADER_LAYOUT) ditentukan oleh salah satu pernyataan kebijakan berikut:
<sp:TransportBinding>
<wsp:Policy>
<sp:Layout>
<sp:Lax.../> => WS_SECURITY_HEADER_LAYOUT_LAX
</sp:Layout>
</wsp:Policy>
</sp:TransportBinding>
<sp:TransportBinding>
<wsp:Policy>
<sp:Layout>
<sp:Strict.../> => WS_SECURITY_HEADER_LAYOUT_STRICT
</sp:Layout>
</wsp:Policy>
</sp:TransportBinding>
<sp:TransportBinding>
<wsp:Policy>
<sp:Layout>
<sp:LaxTsFirst.../> => WS_SECURITY_HEADER_LAYOUT_LAX_WITH_TIMESTAMP_FIRST
</sp:Layout>
</wsp:Policy>
</sp:TransportBinding>
<sp:TransportBinding>
<wsp:Policy>
<sp:Layout>
<sp:LaxTsLast.../> => WS_SECURITY_HEADER_LAYOUT_LAX_WITH_TIMESTAMP_LAST
</sp:Layout>
</wsp:Policy>
</sp:TransportBinding>
Pembatasan dengan Keamanan Cap Waktu
Bagian ini berlaku ketika salah satu batasan pengikatan berikut digunakan:
- WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_USERNAME_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT
Apakah tanda waktu disertakan dalam header keamanan (seperti yang ditentukan oleh WS_SECURITY_PROPERTY_TIMESTAMP_USAGE) ditentukan oleh keberadaan sp:IncludeTimestamp di lokasi berikut:
<sp:TransportBinding>
<wsp:Policy>
<sp:IncludeTimestamp.../>
</wsp:Policy>
</sp:TransportBinding>
Jika pernyataan sp:IncludeTimestamp ada, maka nilai dari kebijakan adalah WS_SECURITY_TIMESTAMP_USAGE_ALWAYS.
Jika pernyataan sp:IncludeTimestamp tidak ada, nilai kebijakan adalah WS_SECURITY_TIMESTAMP_USAGE_NEVER.