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 :

UsernameToken Authentication avec Rampart/axis2


Sujet :

Services Web Java

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut UsernameToken Authentication avec Rampart/axis2
    Bonjour,
    Je suis débutante dans le domaine de la sécurité des Services Web. Pour me familiariser avec l'outil Apache Rampart, j'ai commencé par ses exemples rampart1.6\rampart-1.6.0\samples\policy
    mais lors de l'exécution, j'ai eu cette erreur:
    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
    Exception in thread "main" java.lang.NoClassDefFoundError: org/jaxen/JaxenException
        at org.apache.rampart.RampartMessageData.<init>(RampartMessageData.java:278)
        at org.apache.rampart.MessageBuilder.build(MessageBuilder.java:61)
        at org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:65)
        at org.apache.axis2.engine.Phase.invokeHandler(Phase.java:340)
        at org.apache.axis2.engine.Phase.invoke(Phase.java:313)
        at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:262)
        at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:427)
        at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406)
        at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
        at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
        at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:555)
        at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:531)
        at org.apache.rampart.samples.policy.sample01.Client.main(Client.java:98)
    Caused by: java.lang.ClassNotFoundException: org.jaxen.JaxenException
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 13 more
    J'ai vérifié toute la config mais je sais pas d'où vient cette erreur.

    Voila le code 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    package org.apache.rampart.samples.policy.sample01;
    
    import org.apache.axiom.om.OMAbstractFactory;
    import org.apache.axiom.om.OMElement;
    import org.apache.axiom.om.OMFactory;
    import org.apache.axiom.om.OMNamespace;
    import org.apache.axiom.om.impl.builder.StAXOMBuilder;
    import org.apache.axis2.addressing.EndpointReference;
    import org.apache.axis2.client.Options;
    import org.apache.axis2.client.ServiceClient;
    import org.apache.axis2.context.ConfigurationContext;
    import org.apache.axis2.context.ConfigurationContextFactory;
    import org.apache.neethi.Policy;
    import org.apache.neethi.PolicyEngine;
    import org.apache.rampart.RampartMessageData;
    
    import javax.xml.namespace.QName;
    
    public class Client {
    
        public static void main(String[] args) throws Exception {
            
          
            
            ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem("client_repo_path", null);
            
            ServiceClient client = new ServiceClient(ctx, null);
            Options options = new Options();
            options.setAction("urn:echo");
            options.setTo(new EndpointReference(""http://localhost:8080/testRampart/services/SimpleService""));
            options.setProperty(RampartMessageData.KEY_RAMPART_POLICY,  loadPolicy("G:/TestWS/testRampart/WebContent/WEB-INF/conf/policy.xml"));
            client.setOptions(options);
            
            client.engageModule("addressing");
            client.engageModule("rampart");
            
            OMElement response = client.sendReceive(getPayload("Hello world"));
            
            System.out.println(response);
            
        }
        
        private static Policy loadPolicy(String xmlPath) throws Exception {
            StAXOMBuilder builder = new StAXOMBuilder(xmlPath);
            return PolicyEngine.getPolicy(builder.getDocumentElement());
        }
        
        private static OMElement getPayload(String value) {
            OMFactory factory = OMAbstractFactory.getOMFactory();
            OMNamespace ns = factory.createOMNamespace("http://sample01.policy.samples.rampart.apache.org","ns1");
            OMElement elem = factory.createOMElement("echo", ns);
            OMElement childElem = factory.createOMElement("param0", null);
            childElem.setText(value);
            elem.addChild(childElem);
            
            return elem;
        }
        
    }
    et la classe PWCBHandler:
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    package org.apache.rampart.samples.policy.sample01;
     
    import org.apache.ws.security.WSPasswordCallback;
     
    import javax.security.auth.callback.Callback;
    import javax.security.auth.callback.CallbackHandler;
    import javax.security.auth.callback.UnsupportedCallbackException;
     
    import java.io.IOException;
     
    public class PWCBHandler implements CallbackHandler {
     
        public void handle(Callback[] callbacks) throws IOException,
                UnsupportedCallbackException {
            for (int i = 0; i < callbacks.length; i++) {
     
                //When the server side need to authenticate the user
                WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
                if (pwcb.getUsage() == WSPasswordCallback.USERNAME_TOKEN_UNKNOWN) {
                    if(pwcb.getIdentifer().equals("alice") && pwcb.getPassword().equals("bobPW")) {
                        return;
                    } else {
                        throw new UnsupportedCallbackException(callbacks[i], "check failed");
                    }
                }
     
                //When the client requests for the password to be added in to the 
                //UT element
                pwcb.setPassword("bobPW");
            }
        }
     
    }
    et le code de service:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    package org.apache.rampart.samples.policy.sample01;
     
    public class SimpleService {
     
        public String echo(String arg) {
            return arg;
        }
    }
    et le fichier policy.xml:
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <?xml version="1.0" encoding="UTF-8"?>
    <!--
     !
     ! Copyright 2006 The Apache Software Foundation.
     !
     ! Licensed under the Apache License, Version 2.0 (the "License");
     ! you may not use this file except in compliance with the License.
     ! You may obtain a copy of the License at
     !
     !      http://www.apache.org/licenses/LICENSE-2.0
     !
     ! Unless required by applicable law or agreed to in writing, software
     ! distributed under the License is distributed on an "AS IS" BASIS,
     ! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     ! See the License for the specific language governing permissions and
     ! limitations under the License.
     !-->
    <wsp:Policy wsu:Id="UTOverTransport" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
        <wsp:ExactlyOne>
          <wsp:All>
            <sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
              <wsp:Policy>
                <sp:TransportToken>
                  <wsp:Policy>
                    <sp:HttpsToken RequireClientCertificate="false"/>
                  </wsp:Policy>
                </sp:TransportToken>
                <sp:AlgorithmSuite>
                  <wsp:Policy>
                    <sp:Basic128/>
                  </wsp:Policy>
                </sp:AlgorithmSuite>
                <sp:Layout>
                  <wsp:Policy>
                    <sp:Lax/>
                  </wsp:Policy>
                </sp:Layout>
                <sp:IncludeTimestamp/>
              </wsp:Policy>
            </sp:TransportBinding>
            <sp:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <wsp:Policy>
                    <sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient" />
              </wsp:Policy>
            </sp:SignedSupportingTokens>
     
            <ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
                <ramp:user>alice</ramp:user>
                <ramp:passwordCallbackClass>org.apache.rampart.samples.policy.sample01.PWCBHandler</ramp:passwordCallbackClass>
            </ramp:RampartConfig>
     
          </wsp:All>
        </wsp:ExactlyOne>
    </wsp:Policy>
    et je pense que le problème est dans l'appelle de la méthode:getPayload("Hello world")

    Merci.

  2. #2
    Membre averti Avatar de rockley
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 404
    Points : 346
    Points
    346

Discussions similaires

  1. problème avec plugins axis2 pour eclipse
    Par texel dans le forum Services Web
    Réponses: 1
    Dernier message: 11/07/2011, 11h12
  2. [Security] Probleme authentication avec intercept-url
    Par libuma dans le forum Spring
    Réponses: 0
    Dernier message: 19/05/2011, 14h57
  3. WebService sécurisé avec rampart
    Par DJBORIE dans le forum Services Web
    Réponses: 0
    Dernier message: 14/08/2010, 12h32
  4. Authentication avec IPrincipal
    Par LEK dans le forum C#
    Réponses: 1
    Dernier message: 19/03/2008, 09h00
  5. Authentication avec openLDAP
    Par pjmorce dans le forum Ruby on Rails
    Réponses: 0
    Dernier message: 30/10/2007, 11h17

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