IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Java Discussion :

Web Services Securisés avec WSS4J (X.509 Token Profile)


Sujet :

Services Web Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de mmathieu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 35
    Par défaut Web Services Securisés avec WSS4J (X.509 Token Profile)
    Bonjour à tous,
    j'ai reussi à sécuriser des Web Services avec WSS4J (Username Token). Désormais je voudrais essayer l'autre méthode qui utilise un certificat X.509 (Token Profile).
    Je n'ai pas trouvé d'exemples bien faits sur le net, est-ce que quelqu'un pourrait me donner un lien vers un tutorial ou me donner un exemple: la difficulté ne réside pas dans le fait de créer le certificat avec keytool mais la suite...

    Merci d'avance à tous!
    ++

  2. #2
    Invité de passage
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 1
    Par défaut
    Citation Envoyé par mmathieu
    Bonjour à tous,
    j'ai reussi à sécuriser des Web Services avec WSS4J (Username Token). Désormais je voudrais essayer l'autre méthode qui utilise un certificat X.509 (Token Profile).
    Je n'ai pas trouvé d'exemples bien faits sur le net, est-ce que quelqu'un pourrait me donner un lien vers un tutorial ou me donner un exemple: la difficulté ne réside pas dans le fait de créer le certificat avec keytool mais la suite...

    Merci d'avance à tous!
    ++
    Je sais que le topic est assez vieu mais la question m'interesse fortement aussi... Si tu as trouve une solution ou si quelqu'un d'autre en a une ce serait sympa de la poster !

  3. #3
    Membre émérite
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Par défaut
    pareil...

  4. #4
    Membre averti
    Profil pro
    DevOps
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : DevOps

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Par défaut
    pour ma part j'ai réussi a encrypté les requetes et reponse du webservice, et a ajouter une signature, seulement je n'arrive pas à faire un code correct pour manier à la fois l'encryption et la signature,

    Pour la signature :

    wsdd coté server
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
          <requestFlow>
          	<handler type="soapmonitor"/>
    			<handler type="java:org.apache.ws.axis.security.WSDoAllReceiver">
    				<parameter name="passwordCallbackClass" value="fr.lig.adele.action.ServerPWCallback_Sign"/>
    				<parameter name="action" value="Signature"/>
    				<parameter name="signaturePropFile" value="server_crypto.properties" />
    				<parameter name="user" value="client"/>
    				<parameter name="signatureKeyIdentifier" value="X509KeyIdentifier" />
    			</handler>
          </requestFlow>
     
          <responseFlow>
          	<handler type="soapmonitor"/>
          </responseFlow>
    callback coté server
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    public class ServerPWCallback_Sign implements CallbackHandler {
     
    	public void handle(Callback[] callbacks) throws IOException,
    			UnsupportedCallbackException {
     
    		for(int i = 0 ; i < callbacks.length ; i++) {
    			if(callbacks[i] instanceof WSPasswordCallback) {
    				WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
     
    				if(pc.getUsage() == WSPasswordCallback.SIGNATURE) {
    					if(pc.getIdentifer().equals("server")) {
    						pc.setPassword("serverKeyPass");
    					}
    				}
    			} else {
    				throw new UnsupportedCallbackException(callbacks[i], "Unrecognized Callback");
    			}
    		}
     
    	}
     
    }
    wsdd coté client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    	<transport name="http" pivot="java:org.apache.axis.transport.http.HTTPSender"/>
    	<globalConfiguration>
    		<requestFlow>
    			<handler type="java:org.apache.ws.axis.security.WSDoAllSender">
    				<parameter name="passwordCallbackClass" value="fr.lig.adele.action.PWCallback_Sign"/>
    				<parameter name="action" value="Signature"/>
    				<parameter name="signaturePropFile" value="crypto.properties" />
    				<parameter name="user" value="client"/>
    				<parameter name="signatureKeyIdentifier" value="X509KeyIdentifier" />
    			</handler>
    		</requestFlow>
    		<responseFlow>
    		</responseFlow>
    	</globalConfiguration>
    </deployment>
    callback coté client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public class PWCallback_Sign implements CallbackHandler {
     
    	public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
    		for (int i = 0; i < callbacks.length; i++){
    			if (callbacks[i] instanceof WSPasswordCallback){
    				WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
    				// set the password given a username
    				if ("client".equals(pc.getIdentifer())){
    					pc.setPassword("clientKeyPass");
    				}
    			}else{
    				throw new UnsupportedCallbackException(callbacks[i], "Unrecognized Callback");
    			}
    		}
    	}
     
    }
    pour l'encryption:

    wsdd coté server
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
          <requestFlow>
          	<handler type="soapmonitor"/>
    		<handler type="java:org.apache.ws.axis.security.WSDoAllReceiver">
    			<parameter name="passwordCallbackClass" value="fr.lig.adele.action.ServerPWCallback_Encrypt"/>
    			<parameter name="action" value="Encrypt"/>
    			<parameter name="decryptionPropFile" value="server_crypto.properties"/>
    		</handler>
          </requestFlow>
     
     
          <responseFlow>
          	<handler type="java:org.apache.ws.axis.security.WSDoAllSender">
          		<parameter name="action" value="Encrypt"/>
          		<parameter name="encryptionPropFile" value="server_crypto.properties"/>
          		<parameter name="encryptionKeyIdentifier" value="X509KeyIdentifier"/>
          		<parameter name="encryptionUser" value="client"/>
          	</handler>
          	<handler type="soapmonitor"/>
          </responseFlow>
    callback coté server
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    public class ServerPWCallback_Encrypt implements CallbackHandler {
     
    	public void handle(Callback[] callbacks) throws IOException,
    			UnsupportedCallbackException {
     
    		for(int i = 0 ; i < callbacks.length ; i++) {
    			if(callbacks[i] instanceof WSPasswordCallback) {
    				WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
     
    				if(pc.getUsage() == WSPasswordCallback.DECRYPT) {
    					if(pc.getIdentifer().equals("server")) {
    						pc.setPassword("serverKeyPass");
    					}
    				}
    			} else {
    				throw new UnsupportedCallbackException(callbacks[i], "Unrecognized Callback");
    			}
    		}
     
    	}
     
    }
    wsdd coté client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    	<transport name="http" pivot="java:org.apache.axis.transport.http.HTTPSender"/>
    	<globalConfiguration>
    		<requestFlow>
    	      	<handler type="java:org.apache.ws.axis.security.WSDoAllSender">
    	      		<parameter name="action" value="Encrypt"/>
    	      		<parameter name="encryptionPropFile" value="crypto.properties"/>
    	      		<parameter name="encryptionKeyIdentifier" value="X509KeyIdentifier"/>
    	      		<parameter name="encryptionUser" value="server"/>
    	      	</handler>
    		</requestFlow>
    		<responseFlow>
    			<handler type="java:org.apache.ws.axis.security.WSDoAllReceiver">
    				<parameter name="passwordCallbackClass" value="fr.lig.adele.action.PWCallback_Encrypt"/>
    				<parameter name="action" value="Encrypt"/>
    				<parameter name="decryptionPropFile" value="crypto.properties"/>
    			</handler>
    		</responseFlow>
    	</globalConfiguration>
    </deployment>
    callback coté client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public class PWCallback_Encrypt implements CallbackHandler {
     
    	public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
    		for (int i = 0; i < callbacks.length; i++){
    			if (callbacks[i] instanceof WSPasswordCallback){
    				WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
    				// set the password given a username
    				if ("client".equals(pc.getIdentifer())){
    					pc.setPassword("clientKeyPass");
    				}
    			}else{
    				throw new UnsupportedCallbackException(callbacks[i], "Unrecognized Callback");
    			}
    		}
    	}
     
    }
    pour les client il faut lui spécifier le wsdd, du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		ActionService service = new ActionServiceLocator(new FileProvider("client_deploy_Sign.wsdd"));
    		service.getactionService().runAction(new IntegerA(5));

Discussions similaires

  1. [Web Service] Création avec WebSphere
    Par tatemilio2 dans le forum Services Web
    Réponses: 1
    Dernier message: 26/07/2006, 10h12
  2. [Web Services] Appel de Web Service (pb avec authentification)
    Par cicolas dans le forum Spring
    Réponses: 4
    Dernier message: 04/07/2006, 10h20
  3. [WEB SERVICE]probleme avec jaxrpc
    Par olive2bx dans le forum Services Web
    Réponses: 1
    Dernier message: 30/06/2006, 09h39
  4. [Web Service] example avec base Oracle 10g
    Par osmoze dans le forum Services Web
    Réponses: 3
    Dernier message: 19/04/2006, 19h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo