메타데이터 매핑
메타데이터 문서의 내용은 다음 섹션에서 설명하는 방식으로 메타데이터 API에 매핑됩니다.
다음 네임스페이스 접두사는 이 설명서 전체에서 사용됩니다.
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
후속 섹션에서는 해당되는 메타데이터 구문(WSDL 또는 정책)과 함께 API 구문을 설명합니다.
WSDL 및 정책과 같은 메타데이터 사양을 숙지하면 이 섹션을 이해하는 데 도움이 됩니다.
엔드포인트의 주소(WS_ENDPOINT_ADDRESS참조)는 WSDL 문서의 wsdl:port 요소 내의 확장성 요소에서 가져옵니다. 주소를 지정하는 데 지원되는 확장성 요소는 다음과 같습니다.
<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참조)은 사용되는 soap 바인딩의 전송에 따라 다음과 같이 결정됩니다.
<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참조)은 사용되는 비누 바인딩에 따라 다음과 같이 결정됩니다.
<wsdl:binding...>
<soap11:binding.../> => WS_ENVELOPE_VERSION_SOAP_1_1
</wsdl:binding>
<wsdl:binding...>
<soap12:binding.../> => WS_ENVELOPE_VERSION_SOAP_1_2
</wsdl:binding>
주소 지정 버전(WS_CHANNEL_PROPERTY_ADDRESSING_VERSION참조)은 엔드포인트 정책의 다음 어설션에 의해 결정됩니다.
<wsp:Policy...>
<wsa09p:UsingAddressing.../> => WS_ADDRESSING_VERSION_0_9
</wsp:Policy>
<wsp:Policy...>
<wsa10p:UsingAddressing.../> => WS_ADDRESSING_VERSION_1_0
</wsp:Policy>
주소 지정 어설션이 없으면 WS_ADDRESSING_VERSION_TRANSPORT 가정합니다.
메시지 인코딩(WS_CHANNEL_PROPERTY_ENCODING참조)은 엔드포인트 정책의 다음 어설션에 의해 결정됩니다.
<wsp:Policy...>
<binp:BinaryEncoding.../> => WS_ENCODING_XML_BINARY_SESSION_1, WS_ENCODING_XML_BINARY_1
</wsp:Policy>
이진 인코딩 정책 어설션에는 이진 인코딩이 세션 기반인지 비세션 기반인지에 대한 정보가 포함되지 않습니다. 이는 인코딩 속성 제약 조건에 의해 결정됩니다(사용 중인 WS_CHANNEL_TYPE가 세션 기반인지 아닌지에 따라 적절해야 합니다).
<wsp:Policy...>
<mtomp:OptimizedMimeSerialization.../> => WS_ENCODING_XML_MTOM_UTF8, WS_ENCODING_XML_MTOM_UTF16LE, WS_ENCODING_XML_MTOM_UTF16BE
</wsp:Policy>
위의 어설션 중 어느 것도 없는 경우 텍스트 인코딩이 사용됩니다. WS_ENCODING_XML_UTF8, WS_ENCODING_XML_UTF16LE, WS_ENCODING_XML_UTF16BE.
정책에는 MTOM 또는 텍스트 인코딩(UTF8, UTF16LE 또는 UTF16BE)에 대한 문자 집합에 대한 정보가 포함되지 않습니다. 사용되는 실제 문자 집합 값은 인코딩 속성 제약 조건에 의해 결정됩니다.
이 섹션은 WS_HTTP_HEADER_AUTH_SECURITY_BINDING_CONSTRAINT 보안 바인딩 제약 조건이 지정된 경우에 적용됩니다.
이 보안 바인딩은 HTTP 헤더 인증을 사용해야 하고 특정 인증 체계를 사용해야 함을 나타내는 서로 다른 어설션으로 정책에 표시됩니다. 정책의 어설션은 WS_SECURITY_BINDING_PROPERTY_HTTP_HEADER_AUTH_SCHEME의 값에 다음과 같이 대응됩니다.
<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>
이 섹션은 WS_SSL_TRANSPORT_SECURITY_BINDING_CONSTRAINT 보안 바인딩 제약 조건이 지정된 경우에 적용됩니다. 이 경우 다음 정책 어설션이 사용됩니다.
<wsp:Policy...>
<sp:TransportBinding...>
<wsp:Policy...>
<sp:TransportToken...>
<wsp:Policy...>
<sp:HttpsToken.../>
</wsp:Policy...>
</wsp:Policy>
</sp:TransportBinding...>
</wsp:Policy>
이 섹션은 WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_CONSTRAINT 보안 바인딩 제약 조건이 지정된 경우에 적용됩니다. 이 경우 다음 정책 어설션이 사용됩니다.
<wsp:Policy...>
<sp:TransportBinding...>
<wsp:Policy...>
<sp:TransportToken...>
<wsp:Policy...>
<netf:WindowsTransportSecurity.../>
</wsp:Policy...>
</wsp:Policy>
</sp:TransportBinding...>
</wsp:Policy>
보안 바인딩 제약 조건이 지정된 경우 WS_SECURITY_PROPERTY_TRANSPORT_PROTECTION_LEVEL 속성 제약 조건을 지정할 수 있습니다.
WS_SSL_TRANSPORT_SECURITY_BINDING_CONSTRAINT
정책 값은 항상 WS_PROTECTION_LEVEL_SIGN_AND_ENCRYPT입니다.
WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_CONSTRAINT
정책의 값은 다음과 같이 WindowsTransportSecurity 어설션의 일부로 지정됩니다.
<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
정책의 값은 항상 WS_PROTECTION_LEVEL_NONE.
이 섹션은 WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_CONSTRAINT 보안 바인딩 제약 조건이 지정된 경우에 적용됩니다. 이 경우 다음 정책 어설션이 사용됩니다.
<sp:EndorsingSupportingTokens...>
<wsp:Policy>
<sp:KerberosToken>
<WssGssKerberosV5ApReqToken11.../>
</sp:KerberosToken>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
이 섹션은 WS_USERNAME_MESSAGE_SECURITY_BINDING_CONSTRAINT 보안 바인딩 제약 조건이 지정된 경우에 적용됩니다. 이 경우 다음 정책 어설션이 사용됩니다.
<sp:SignedSupportingTokens>
<wsp:Policy>
<sp:UsernameToken.../>
</wsp:Policy>
</sp:SignedSupportingTokens>
이 섹션은 WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT 보안 바인딩 제약 조건이 지정된 경우에 적용됩니다. 이 경우 다음 정책 어설션이 사용됩니다.
<sp:EndorsingSupportingTokens>
<wsp:Policy>
<sp:X509Token.../>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
이 섹션은 WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT 보안 바인딩 제약 조건이 지정된 경우에 적용됩니다. 이 경우 다음 정책 어설션이 사용됩니다.
<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>
다음은 위의 정책에 대한 WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT 필드의 매핑에 대해 설명합니다.
claimConstraints 필드는 위의 wsi:ClaimType 요소 내에 표시되는 클레임 형식 URI 집합을 확인하는 데 사용됩니다.
issuerAddress 필드는 토큰을 발급할 수 있는 서비스의 WS_ENDPOINT_ADDRESS 위 wsp:Issuer 요소에 해당합니다.
requestSecurityTokenTemplate 필드는 wsp:RequestSecurityTokenTemplate 요소의 자식 요소에 해당합니다.
이 섹션은 WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_CONSTRAINT 보안 바인딩 제약 조건이 지정된 경우에 적용됩니다. 이 경우 다음 정책 어설션이 사용됩니다.
<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>
엔트로피 모드는 <sp:Trust10> 어설션에 의해 결정됩니다. <sp:RequireClientEntropy/> 및 <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_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT 보안 바인딩 제약 조건이 지정된 경우에 적용됩니다. 다음 정책 어설션은 WS_TRUST_VERSION 및 관련 옵션을 식별하는 데 사용됩니다.
<sp:Trust10> => WS_TRUST_VERSION_FEBRUARY_2005
<sp:Policy>
<sp:MustSupportClientChallenge/> ?
<sp:MustSupportServerChallenge/> ?
<sp:RequireClientEntropy/> ?
<sp:RequireServerEntropy/> ?
<sp:MustSupportIssuedTokens/> ?
</sp:Policy>
</sp:Trust10>
트러스트 버전은 WS_REQUEST_SECURITY_TOKEN_PROPERTY_CONSTRAINT을(를) 사용하여, 속성 ID로서 WS_REQUEST_SECURITY_TOKEN_PROPERTY_TRUST_VERSION을(를) 지정하여 설정할 수 있습니다.
이 섹션은 다음 바인딩 제약 조건을 사용하는 경우에 적용됩니다.
- 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
헤더 보안 버전(WS_SECURITY_PROPERTY_SECURITY_HEADER_VERSION지정)은 다음 정책 어설션 중 하나에 의해 결정됩니다.
<wsp:Wss10> ... </wsp:Wss10> => WS_SECURITY_HEADER_VERSION_1_0
<wsp:Wss11> ... </wsp:Wss11> => WS_SECURITY_HEADER_VERSION_1_1
이 섹션은 다음 바인딩 제약 조건을 사용하는 경우에 적용됩니다.
- 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
보안 헤더 레이아웃(WS_SECURITY_PROPERTY_SECURITY_HEADER_LAYOUT지정)은 다음 정책 어설션 중 하나에 의해 결정됩니다.
<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>
이 섹션은 다음 바인딩 제약 조건을 사용하는 경우에 적용됩니다.
- 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
타임스탬프가 보안 헤더에 포함되는지 여부(WS_SECURITY_PROPERTY_TIMESTAMP_USAGE지정)는 다음 위치에 sp:IncludeTimestamp가 있는지 여부에 따라 결정됩니다.
<sp:TransportBinding>
<wsp:Policy>
<sp:IncludeTimestamp.../>
</wsp:Policy>
</sp:TransportBinding>
sp:IncludeTimestamp 어설션이 있으면, 정책의 값이 WS_SECURITY_TIMESTAMP_USAGE_ALWAYS입니다.
sp:IncludeTimestamp 어설션이 없으면, 정책의 값은 WS_SECURITY_TIMESTAMP_USAGE_NEVER입니다.