2010-03-02 8 views
1

Je dois accéder au principal du client (nom d'utilisateur) dans une méthode ejb. Je ne veux pas l'ajouter en paramètre. Essayé de les ajouter à l'objet Contexte comme;Accès au client principal à l'intérieur d'une méthode ejb

prop.add(Context.SECURITY_AUTHENTICATION,"user") 
prop.add(Context.SECURITY_CREDENTIALS,"pass") 

mais en essayant d'y accéder à l'intérieur de la méthode similaire; @Resource private SessionContext ctx;

public void someMethod() { 
    Principal principal = ctx.getCallerPrincipal(); 
    //returns anonymous 

toujours me donner l'utilisateur ennuyeux.

En travaillant sur weblogic, des pointeurs?

Merci

Répondre

1

problème similaire ... Je teste avec un certificat client avec un UserNameMapper personnalisé. Mon UserNameMapper renvoie "steve", mais le principal dans l'EJB renvoyait "<anonymous>" jusqu'à ce que j'ajoute un utilisateur "steve" via la console.

Environment env = new Environment(); 
env.setInitialContextFactory(Environment.DEFAULT_INITIAL_CONTEXT_FACTORY); 
// env.setSecurityPrincipal("user"); 
// env.setSecurityCredentials("pass"); 
env.setProviderUrl("t3s://localhost:7002"); 

InputStream key = new PEMInputStream(new FileInputStream(CERT_KEYFILE)); 
InputStream cert = new PEMInputStream(new FileInputStream(CERT_CERTFILE)); 
env.setSSLClientCertificate(new InputStream[] {key, cert}); 
env.setSSLClientKeyPassword(CERT_KEYPASSWORD); 

Même problème lors de l'utilisation d'un client JAAS avec le UsernamePasswordLoginModule. Correction en définissant le nom d'utilisateur/mot de passe dans la recherche InitialContext dans PrivilegedAction. L'EJB référence ce dernier en tant que principal car il peut s'agir d'un nom d'utilisateur/mot de passe différent.

+0

Steve pourriez-vous s'il vous plaît expliquer cette ligne, je vous serai vraiment reconnaissant 'Correction en définissant le nom d'utilisateur/mot de passe dans la recherche InitialContext dans le PrivilegedAction' –

+0

Voir l'exemple 17-3 http://www.onjava.com /pub/a/onjava/excerpt/weblogic_chap17/index1.html?page=5. Il y a un point intéressant qui dit ne pas fournir les informations d'identification de l'utilisateur. J'ai eu un moment, mais quand j'ai testé, je n'ai pas pu accéder au principal dans l'EJB sans les avoir explicitement fournis dans InitialContext. Donc vous ajouteriez quelque chose comme les lignes que j'ai commentées plus haut dans l'exemple 17-3. HTH –

+0

Merci, je l'ai compris, C'est un code spécifique à WebLogic, En fait, j'essayais d'accéder à un EJB fonctionnant sur Glassfish à partir de l'Application Standalone (à partir de avec Eclipse). J'ai réussi à authentifier le client, mais cette information n'est pas propagée à l'EJB. Il reste anonyme. Quoi qu'il en soit, merci beaucoup. –

Questions connexes