Dans Liberty,
vous pouvez définir votre règle de service Web (WS-Policy) dans une pièce jointe de règle
ou dans le fichier WSDL (Web Services Description Language) d'une application de service Web.
Pourquoi et quand exécuter cette tâche
Lorsque le fichier WSDL n'est pas incorporé avec votre application, vous pouvez utiliser la pièce jointe de règle pour configurer
la règle WS-Policy pour votre application de service Web. La fonction de pièce jointe de règle est fréquemment activée automatiquement dans votre package
d'application de service Web lorsque vous activez la fonction JAX-WS (Java API for XML Web
Services) 2.2. Vous avez seulement à configurer le côté client de services Web et le côté fournisseur en définissant le fichier de pièce jointe
WS-Policy de l'application.
La prise en charge de WS-Policy est une implémentation des spécifications suivantes sur le serveur d'application.
- WS-Policy est une spécification permettant aux services Web d'utiliser XML pour faire connaître leurs règles de sécurité et de qualité de service, et
aux consommateurs de service Web de spécifier leurs exigences de règles.
Pour plus d'informations, voir Web Services Policy 1.5 -
Framework.
- La spécification WS-Policy Attachment définit deux mécanismes polyvalents pour associer des règles, comme défini dans le document Web Services Policy Framework,
ainsi que les sujets auxquels ils s'appliquent. Pour plus d'informations, voir
Web
Services Policy 1.2 - Attachment.
Procédure
- Créez un fichier policy-attachments-client.xml ou
policy-attachments-server.xml.
L'exemple suivant illustre comment définir les attributs dans le fichier policy-attachments-client.xml ou
policy-attachments-server.xml :
<attachments
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://www.w3.org/ns/ws-policy"
xmlns:wsa="http://www.w3.org/2005/08/addressing"
xmlns:sp13="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200802"
xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
<wsp:PolicyAttachment wsdlNamespace="http://tempuri.org/AreaService/">
<wsp:AppliesTo>
<wsp:URI>http://tempuri.org/AreaService/#wsdl11.service(AreaService)</wsp:URI>
</wsp:AppliesTo>
<wsp:Policy wsu:Id="UsernameTokenwithPasswordHashoverSSL">
<wsp:ExactlyOne>
<wsp:All>
<sp:SupportingTokens>
<wsp:Policy>
<sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssUsernameToken10 />
<sp:HashPassword />
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SupportingTokens>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
</wsp:PolicyAttachment>
</attachments>
Vous pouvez lier une règle de deux manières :
- En définissant une URL de service Web directement à l'aide d'une expression Endpoint DomainExpression
<wsa:EndpointReference>, comme suit.
<wsp:AppliesTo>
<wsa:EndpointReference>
<wsa:Address>http://localhost:8091/wsatApp/HelloImplService</wsa:Address>
</wsa:EndpointReference>
</wsp:AppliesTo>
- En liant une règle via l'URI DomainExpression <wsp:URI>, comme suit.
<wsp:AppliesTo>
<wsp:URI>http://server.test.ws.ibm.com/#wsdl11.service(HelloImplService)</wsp:URI>
</wsp:AppliesTo>
Le tableau suivant présente les éléments WSDL et leurs identificateurs d'expressions dans le fichier de pièce jointe de règle :
Tableau 1. <wsp:URI> Liste d'expressionsElément WSDL |
Identificateur d'expression (omettre espace nom cible) |
Définitions |
wsdl11.definitions() |
Message |
wsdl11.message(message) |
Message/part |
wsdl11.messagePart(message / part) |
portType |
wsdl11.portType(portType) |
portType/operation |
wsdl11.portTypeOperation(portType/operation) |
portType/operation/input |
wsdl11.portTypeOperation.input(portType/operation) |
portType/operation/output |
wsdl11.portTypeOperation.output(portType/operation) |
portType/operation/fault |
wsdl11.portTypeOperation.fault(portType/operation/fault) |
Binding |
wsdl11.binding(binding) |
Binding/operation |
wsdl11.bindingOperation(binding/operation) |
Binding/operation/input |
wsdl11.bindingOperation.input(binding/operation) |
Binding/operation/output |
wsdl11.bindingOperation.output(binding/operation) |
Binding/operation/fault |
wsdl11.bindingOperation.fault(binding/operation/fault) |
Service |
wsdl11.service(service) |
port |
wsdl11.port(service/port) |
- Placez le fichier policy-attachments-client.xml ou
policy-attachments-server.xml dans le dossier WEB-INF ou META-INF de votre application.
- Placez le fichier policy-attachments-client.xml dans le dossier
WEB-INF ou META-INF de votre application pour WS-Policy du client de service Web.
- Placez le fichier policy-attachments-server.xml dans le dossier
WEB-INF ou META-INF de votre application pour WS-Policy du fournisseur de service Web.
Résultats
Vous avez défini la règle WS-Policy via une pièce jointe de règle sans qu'un fichier WSDL ait été packagé dans votre application.