2013-06-10 1 views
2

J'utilise le "maven-jaxb22-plugin" pour générer des classes afin que je puisse appeler un service web écrit en .Net. Habituellement cela fonctionne bien mais cette fois, je peux seulement accéder au WSDL en utilisant un certificat client via HTTPS (non disponible via HTTP).Certificat client SSL dans Maven

J'ai été capable de le faire fonctionner avec SoapUI. J'ai ajouté le certificat client dans un keystore JKS et l'ai ajouté aux préférences SoapUI. Ensuite, j'ai créé un nouveau projet en spécifiant l'URL qui ressemble à ceci: https://server.com/Service?wsdl. SoapUI a généré le modèle de requête. J'ai facilement pu interroger le service Web et obtenir une réponse. Cela prouve donc que le WSDL est disponible et que le service Web fonctionne.

Maintenant, dans mon dossier de pom, j'utilise ce plugin:

<build> 
    <finalName>MyService</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin>   
     <plugin> 
      <groupId>org.jvnet.jaxb2.maven2</groupId> 
      <artifactId>maven-jaxb22-plugin</artifactId> 
      <version>0.8.3</version> 
      <configuration> 
       <extension>true</extension> 
       <removeOldOutput>true</removeOldOutput> 
       <schemaLanguage>WSDL</schemaLanguage> 
       <verbose>true</verbose> 
       <schemaIncludes> 
        <includeSchema>https://server.com/Service?wsdl</includeSchema> 
       </schemaIncludes> 
      </configuration> 
      <executions> 
       <execution> 
        <goals> 
         <goal>generate</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

Comment puis-je savoir Maven où mon certificat client est?

Merci

Répondre

2

Vous pouvez utiliser le Maven properties plugin ou utiliser une propriété JVM pour fournir l'emplacement du magasin de confiance.

Dans votre POMbuild/plugins section, ajoutez un nouveau plug-in entrée, où le keystore serait YourKeyStore.jks pour cet exemple:

.. 
<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>properties-maven-plugin</artifactId> 
     <version>1.0-alpha-2</version> 
     <executions> 
      <execution> 
      <goals> 
       <goal>set-system-properties</goal> 
      </goals> 
      <configuration> 
       <properties> 
       <property> 
        <name>javax.net.ssl.trustStore</name> 
        <value>${basedir}/src/test/jmeter/jmeterTrustedKeystore.jks</value> 
       </property> 
       <property> 
        <name>javax.net.ssl.keyStorePassword</name> 
        <value>changeit</value> 
       </property> 
       </properties> 
      </configuration> 
      </execution> 
     </executions> 
</plugin> 
... 
0

Vous pouvez utiliser maven propety configuration pour configurer les propriétés du système Java. Veillez à définir "keyStore" et non "trustStore".

En outre, si vous utilisez un certificat qu'il est pas d'un CA valide, vous devez configurer maven.wagon.http.ssl.insecure = true et maven.wagon.http.ssl.allowall = true

Dans votre cas, utilisez:

.. 
<executions> 
    <execution> 
     <goals> 
      <goal>generate</goal> 
     </goals> 
     <configuration> 
      <properties> 
       <property> 
        <name>javax.net.ssl.keyStore</name> 
        <value>yourks.jks</value> 
       </property> 
       <property> 
        <name>javax.net.ssl.keyStoreType</name> 
        <value>jks</value> 
       </property> 
       <property> 
        <name>javax.net.ssl.keyStorePassword</name> 
        <value>changeit</value> 
       </property> 
       <property> 
        <name>maven.wagon.http.ssl.insecure</name> 
        <value>true</value> 
       </property> 
       <property> 
        <name>maven.wagon.http.ssl.allowall</name> 
        <value>true</value> 
       </property> 
      </properties> 
     </configuration> 
    </execution> 
</executions> 
.. 
Questions connexes