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 null dans EJB


Sujet :

Services Web Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 117
    Par défaut Usernametoken null dans EJB
    Bonjour à tous,

    Je souhaite accéder à un UsernameToken dans mon EJB.

    J'utilise SOAPUI comme client et glassfish comme serveur d'applications.

    Dans SOAPUI, le header est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="0" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
             <wsse:UsernameToken wsu:Id="UsernameToken-1">
                <wsse:Username>hello</wsse:Username>
                <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">GZcQV2BLUJdidoseZI/V416/GGk=</wsse:Password>
             </wsse:UsernameToken>
          </wsse:Security>
    </soapenv:Header>
    Dans mon EJB, je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MessageContext msgCtxt = wsCtxt.getMessageContext();
    HttpServletRequest req = (HttpServletRequest) msgCtxt.get(
                    MessageContext.SERVLET_REQUEST);
    System.out.println(req.getUserPrincipal());
    Cela m'affiche toujours null. L'authentification fonctionne puisque si je mets un username ou un mot de passe faux, j'ai une erreur côté client.

    Merci beaucoup pour votre aide !

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Je n'ai jamais travaillé avec des EJB en webservice, mais il me semble que le HttpServletRequest n'est rempli avec le principal que si l'authentification a lieu par le conteneur J2EE. Hors là c'est le webservice qui fait l'authentification. Tu devrais plutôt utiliser wsCtxt.getUserPrincipal() je pense.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 117
    Par défaut Re
    Bonjour,

    Merci pour cette réponse. J'ai testé et ça marche quand on est en http mais pas en https. Je voudrais le faire en https, avez-vous une idée ?

    En fait, je pense avoir plusieurs Principal mais en https, je récupère uniquement le Principal de la connexion https.

    La méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(wsCtxt.getUserPrincipal());
    me retourne "CN=testWS, L=PARIS, C=FR".

    Merci d'avance !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 117
    Par défaut re
    wsse:Security n'est pas lisible à partir d'un EJB, ni à partir d'un SOAPMessageContext.

    C'est certainement une protection.

    Pour lire les données, j'ai créé des balises username et password comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <soapenv:Header>
    	<username>xxxx</username>
    	<password>yyyy</password>
    </soapenv:Header>
    De cette manière, avec un SOAP Handler, j'ai réussi à accéder à ces informations. Voir topic : http://www.developpez.net/forums/d12...essagecontext/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Oracle] Recherche nulle dans une base et affichage
    Par GLDavid dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/04/2006, 01h01
  2. ASP et valeur NULL dans requêtes SQL
    Par chuck_m dans le forum ASP
    Réponses: 7
    Dernier message: 13/08/2004, 11h15
  3. Date nulle dans une requete paramétrée avec TParameter
    Par denrette dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/06/2004, 08h37
  4. recherche Date nulle dans une table
    Par lol_adele dans le forum Bases de données
    Réponses: 6
    Dernier message: 16/04/2004, 14h06
  5. Passer une valeur Null dans un argument de procédure
    Par preempalver dans le forum VBA Access
    Réponses: 5
    Dernier message: 30/12/2003, 20h52

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