Importation de métadonnées
WWSAPI inclut des éléments d’API qui peuvent être utilisés pour traiter WSDL et Policy à partir d’un point de terminaison avec l’objectif d’extraire des informations qui peuvent être utilisées pour communiquer avec le point de terminaison. Ces API sont généralement utilisées lorsque le protocole de communication pris en charge par le point de terminaison n’est pas déjà connu.
Utilisez la séquence suivante pour traiter les métadonnées :
WsCreateMetadata // create a metadata object
while there are metadata documents to add
{
// retrieve the metadata document from it's location
// (download, read from file, etc)
// add the document to the metadata object
WsReadMetadata
// optionally query the metadata object for any missing documents
WsGetMissingMetadataDocumentAddress?
}
// get the endpoints from the metadata object
WsGetMetadataEndpoints
for each endpoint
{
// examine the endpoint information to see if
// the endpoint is relevant for the particular scenario
if the endpoint is relevant
{
// get the policy object from the endpoint
// get the number of policy alternatives in the policy
WsGetPolicyAlternativeCount
for each policy alternative
{
// construct a policy constraints structure that specifies
// what policy is acceptable and what information to extract
// from the policy
// see if the policy alternative matches the constraints
WsMatchPolicyAlternative
// if there is a match, then use it
// if there is not a match, then it is also possible to
// try with a different constraint structure
}
}
}
// If reusing the metadata object for a different set of documents
WsResetMetadata? // reset metadata object, which removes all documents
WsFreeMetadata // free the metadata object
pour plus d’informations sur la façon dont WSDL et les assertions WS-Policy correspondent à l’API, consultez la rubrique Mappage des métadonnées.
Sécurité
Les métadonnées téléchargées sont uniquement aussi bonnes que l’adresse utilisée pour le télécharger. Une application doit s’assurer qu’elle approuve l’adresse. En outre, une application doit s’assurer qu’elle utilise un protocole de sécurité pour télécharger les documents de métadonnées qui n’autorisent pas la falsification des métadonnées.
Une application doit inspecter les adresses des services exposés par les métadonnées. Par défaut, le runtime garantit que le nom d’hôte du service correspond à celui de l’URL d’origine utilisée pour télécharger les métadonnées, mais l’application peut souhaiter effectuer des vérifications supplémentaires. Une application peut désactiver la vérification du nom d’hôte en remplaçant WS_METADATA_PROPERTY_VERIFY_HOST_NAMES propriété. Si la vérification du nom d’hôte effectuée par défaut est désactivée, l’application doit se protéger contre les documents de métadonnées contenant l’adresse d’un service d’une autre partie qu’elle n’approuve pas d’une autre manière.
Par défaut, la quantité maximale de mémoire utilisée par le runtime de métadonnées pour désérialiser et traiter les métadonnées est de 256 000, et le nombre maximal de documents pouvant être ajoutés est de 32. Ces valeurs par défaut peuvent être remplacées par des propriétés WS_METADATA_PROPERTY_HEAP_REQUESTED_SIZE et WS_METADATA_PROPERTY_MAX_DOCUMENTS. Ces limites sont conçues pour limiter la quantité de téléchargements et limiter la quantité de mémoire allouée afin d’accumuler les métadonnées. L’augmentation de ces valeurs peut entraîner une utilisation excessive de la mémoire, une utilisation du processeur ou une consommation de bande passante réseau. Notez qu’en raison de l’expansion des chaînes de dictionnaire dans le format binaire, un petit message peut entraîner un formulaire désérialisé beaucoup plus volumineux. Par conséquent, le fait de s’appuyer sur de petits messages pour limiter l’allocation de mémoire des métadonnées n’est pas suffisant lors de l’utilisation du format binaire.
Par défaut, le nombre maximal d’alternatives de stratégie est 32, bien qu’il puisse être remplacé par WS_POLICY_PROPERTY_MAX_ALTERNATIVES propriété. Si une application effectue une boucle dans chaque alternative à la recherche d’une correspondance, il peut être nécessaire de rechercher toutes les alternatives avant de trouver une correspondance. L’augmentation du nombre maximal d’alternatives peut entraîner une utilisation excessive du processeur.
Les énumérations suivantes font partie de l’importation de métadonnées :
- WS_METADATA_PROPERTY_ID
- WS_METADATA_STATE
- WS_POLICY_EXTENSION_TYPE
- WS_POLICY_PROPERTY_ID
- WS_POLICY_STATE
- WS_SECURITY_BINDING_CONSTRAINT_TYPE
Les fonctions suivantes font partie de l’importation de métadonnées :
- WsCreateMetadata
- WsFreeMetadata
- WsGetMetadataEndpoints
- WsGetMetadataProperty
- WsGetMissingMetadataDocumentAddress
- WsGetPolicyAlternativeCount
- WsGetPolicyProperty
- WsMatchPolicyAlternative
- WsReadMetadata
- WsResetMetadata
Les handles suivants font partie de l’importation de métadonnées :
Les structures suivantes font partie de l’importation de métadonnées :
- WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_CHANNEL_PROPERTY_CONSTRAINT
- WS_ENDPOINT_POLICY_EXTENSION
- WS_HTTP_HEADER_AUTH_SECURITY_BINDING_CONSTRAINT
- WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_METADATA_ENDPOINT
- WS_METADATA_ENDPOINTS
- WS_METADATA_PROPERTY
- WS_POLICY_CONSTRAINTS
- WS_POLICY_EXTENSION
- WS_POLICY_PROPERTIES
- WS_POLICY_PROPERTY
- WS_REQUEST_SECURITY_TOKEN_PROPERTY_CONSTRAINT
- WS_SECURITY_BINDING_CONSTRAINT
- WS_SECURITY_BINDING_PROPERTY_CONSTRAINT
- WS_SECURITY_CONSTRAINTS
- WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_CONSTRAINT
- WS_SECURITY_PROPERTY_CONSTRAINT
- WS_SSL_TRANSPORT_SECURITY_BINDING_CONSTRAINT
- WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_CONSTRAINT
- WS_USERNAME_MESSAGE_SECURITY_BINDING_CONSTRAINT