Liberty : Fichier ibm-ws-bnd.xml
Vous pouvez personnaliser des noeuds finaux de services Web et configurer des paramètres de sécurité pour les fournisseurs de services Web et les clients de service Web à l'aide du fichier ibm-ws-bnd.xml dans Liberty. Vous devez stocker ce fichier dans le répertoire /WEB-INF de votre application Web ou dans le répertoire /META-INF de votre module EJB.
Chaque élément du fichier ibm-ws-bnd.xml est décrit ci-après.
<webservice-endpoint-properties>
Cet élément permet de définir les propriétés par défaut de tous les noeuds finaux de services Web d'un même module. Un élément webservice-endpoint-properties seulement peut être spécifié pour un module. Vous pouvez spécifier les paires nom-valeur de votre choix applicables au noeud final de service Web sous forme d'attributs de l'élément webservice-endpoint-properties.
Si vous ajoutez la propriété <enableLoggingInOutInterceptor>, vous pouvez consigner au journal les requêtes et réponses SOAP tant côté client que côté serveur :
<webservice-endpoint-properties enableLoggingInOutInterceptor="false">
<webservice-endpoint>
- port-component-name : cet attribut est requis. Il permet de spécifier le nom d'un composant de port.
- address : cet attribut est facultatif. Il permet de spécifier l'adresse de remplacement d'un noeud final de service.
Si vous ajoutez la propriété <enableLoggingInOutInterceptor>, vous pouvez consigner au journal les requêtes et réponses SOAP tant côté client que côté serveur :
<webservice-endpoint port-component-name="Hello">
<properties enableLoggingInOutInterceptor="true"/>
</webservice-endpoint>
<http-publishing>
- context-root : cet attribut est facultatif. Il permet de spécifier la racine de contexte du module EJB dans une application JAX-WS reposant sur un EJB.
<webservice-security>
- security-constraint : cet attribut est facultatif. Il permet d'associer des contraintes de sécurité à une ou plusieurs collections de ressources Web et ne constitue qu'une configuration complémentaire pour les descripteurs de déploiement ou les annotations dans les applications Web.
- security-role : cet attribut est facultatif. Il contient la définition d'un rôle de sécurité et ne constitue qu'une configuration complémentaire pour les descripteurs de déploiement ou les annotations dans les applications Web.
- login-config : cet attribut est facultatif. Il permet de configurer la méthode d'authentification et le nom de domaine et n'est valable que pour les services Web reposant sur un EJB dans un fichier JAR. Si le même attribut est spécifié dans le fichier de descripteur de déploiement, la valeur du descripteur de déploiement est utilisée. La valeur de cet attribut doit être BASIC ou CLIENT_CERT.
<service-ref>
- name : cet attribut est requis. Il permet de spécifier le nom d'une référence de services Web.
- component-name : cet attribut est facultatif. Il permet de spécifier le nom du bean EJB si la référence de service est utilisée dans un module EJB.
- port-address : cet attribut est facultatif. Il permet de spécifier l'adresse des services Web si les services Web référencés ne possèdent qu'un seul port.
- wsdl-location : cet attribut est facultatif. Il permet de spécifier l'adresse URL d'un fichier WSDL à remplacer.
<port>
- name : cet attribut est requis. Il permet de spécifier le nom du port de services Web.
- namespace : cet attribut est facultatif. Il permet de spécifier l'espace de nom du port de services Web. Si l'attribut namespace est présent, la liaison est appliquée au port associé au même nom et au même espace de nom. Sinon, elle est appliquée au port qui porte le même nom.
- address : cet attribut est facultatif. Il permet de spécifier l'adresse pour le port de services Web. S'il est présent, il remplace la valeur de l'attribut port-address définie dans l'élément service-ref.
- username : cet attribut est facultatif. Il permet de spécifier le nom d'utilisateur pour l'authentification de base.
- password : cet attribut est facultatif. Il permet de spécifier le mot de passe pour l'authentification de base. Le mot de passe peut être codé.
- ssl-ref : cet attribut est facultatif. Il référence l'élément ssl qui est configuré dans le fichier server.xml avec l'attribut id. Si l'attribut n'est pas spécifié mais que le serveur prend en charge la sécurité au niveau du transport via la fonction ssl-1.0, le client de service utilise la configuration SSL par défaut de Liberty.
- key-alias : cet attribut est facultatif. Il permet de spécifier l'alias du certificat client. Si l'attribut n'est pas spécifié et que le fournisseur de services Web prend en charge le certificat client, le premier certificat du fichier de clés est utilisé comme valeur pour cet attribut. L'attribut peut aussi remplacer l'attribut clientKeyAlias défini dans l'élément ssl du fichier server.xml.
<properties>
- Pour les clients de service Web, vous pouvez spécifier client.ConnectionTimeout, authorization.UserName, tlsClientParameters.disableCNcheck, et d'autres attributs.
- Pour un noeud final de service Web, vous pouvez spécifier publishedEndpointUrl, org.apache.cxf.wsdl.create.imports et d'autres attributs.
<?xml version="1.0" encoding="UTF-8"?>
<webservices-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ws-bnd_1_0.xsd"
version="1.0">
<!-- optional Web service endpoint default properties -->
<webservice-endpoint-properties org.apache.cxf.wsdl.create.imports="true" ... />
<!-- 0 to many endpoint descriptions -->
<webservice-endpoint port-component-name="..." address="optional override address">
<!-- optional Web service endpoint properties -->
<properties publishedEndpointUrl="http://www.example.com/services/hello"
org.apache.cxf.wsdl.create.imports="false" />
</webservice-endpoint>
...
<!-- optional http publishing module overrides -->
<http-publishing context-root="optional override of module's context root">
<!-- optional web.xml fragment for security -->
<webservice-security>
<!-- SECURITY CONSTRAINTS -->
<security-constraint>
<web-resource-collection>
<web-resource-name>SayHelloServiceName</web-resource-name>
<url-pattern>/SayHelloService</url-pattern>
</web-resource-collection>
<auth-constraint>
<description>SayHelloServiceAuth</description>
<role-name>group123</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!-- SECURITY CONSTRAINTS -->
<security-constraint>
<web-resource-collection>
<web-resource-name>SecuredSayHelloServiceName</web-resource-name>
<url-pattern>/Secured*</url-pattern>
</web-resource-collection>
<auth-constraint>
<description>SecuredSayHelloServiceAuth</description>
<role-name>group123</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!-- SECURITY ROLES -->
<security-role id="group123_id">
<role-name>group123</role-name>
</security-role>
<!-- AUTHENTICATION METHOD: Client certificate or basic authentication -->
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
</webservice-security>
</http-publishing>
<!-- 0 to many client refs -->
<service-ref name="services/sayHelloService"
port-address="http://productServer:productPort/context-root/SayHelloService"/>
<service-ref name="services/securedSayHelloService"
port-address="http://productServer:productPort/context-root/SecuredSayHelloService"
wsdl-location="optional override of WSDL document" />
</webservices-bnd>