Acessando/Autenticando EJBs nas minhas JSPs

0 respostas
B

Olá,

Eu sou newbie em EJBs e estou tendo alguns problemas para pegar o usuário que chamou um determinado EJB ( javax.ejb.SessionContext.getCallerPrincipal().getName() ).

Quando eu chamo sc.getCallerPrincipal().getName() no EJB sempre retorna anonymous.

Depois de uma longa jornada eu consegui autenticar o usuário (não dá mais erro de user/pass inválido), então porque está retornando anonymous ???

  • Se eu troco a senha do usuário 900080 da error de autenticação, isso quer dizer que ele está autenticando o usuário 900080…

Abaixo segue o código que eu uso para fazer lookup NO MEU JSP:

Properties props = new Properties();
props.put( Context.INITIAL_CONTEXT_FACTORY, “com.evermind.server.rmi.RMIInitialContextFactory” );
props.put( javax.naming.Context.SECURITY_PRINCIPAL, “900080” );
props.put( javax.naming.Context.SECURITY_CREDENTIALS, “900080” );
props.put( Context.PROVIDER_URL, “ormi://10.1.213.197:23891” );
// props.put(javax.naming.Context.SECURITY_PRINCIPAL, (usuario==null||usuario.equals("")?“anonimo”:usuario));
InitialContext ctx = new InitialContext(props);
Object auxCreate = ctx.lookup( “java:comp/env/ejb/Servicos/Traducao” );

Aqui esta o meu ejb-jar.xml

<?xml version = ‘1.0’ encoding = ‘ISO-8859-1’?>
<!DOCTYPE ejb-jar PUBLIC “-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN” “http://java.sun.com/dtd/ejb-jar_2_0.dtd”>
<ejb-jar>
<enterprise-beans>
<session>
<description>Session Bean ( Stateless )</description>
<display-name>Traducao</display-name>
<ejb-name>Servico/Traducao</ejb-name>
<home>Servico.TraducaoHome</home>
<remote>Servico.Traducao</remote>
<ejb-class>Servico.impl.TraducaoBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<security-role-ref>
<description>administrators</description>
<role-name>administrators</role-name>
<role-link>administrators</role-link>
</security-role-ref>
<security-identity>
<run-as>
<role-name>administrators</role-name>
</run-as>
</security-identity>
</session>
</enterprise-beans>
</ejb-jar>

Aqui esta o trecho do meu web.xml

<?xml version = ‘1.0’ encoding = ‘ISO-8859-1’?>

<!DOCTYPE web-app PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN” “<a href="http://java.sun.com/dtd/web-app_2_3.dtd">http://java.sun.com/dtd/web-app_2_3.dtd</a>”>

<web-app>

<description>Empty web.xml file for Web Application</description>

(…)

(…)

(…)

<security-role>

<description>Administrators</description>

<role-name>Administrators</role-name>

</security-role>

<ejb-ref>
<ejb-ref-name>ejb/Servico/Traducao</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>Servico.TraducaoHome</home>
<remote>Servico.Traducao</remote>
<ejb-link>Servico/Traducao</ejb-link>
<run-as>Administrators</run-as>
</ejb-ref>
</web-app>

Aqui esta o meu jazn-data.xml

<?xml version=“1.0” encoding=“UTF-8” standalone=‘yes’?>
<!DOCTYPE jazn-data PUBLIC “JAZN-XML Data” “http://xmlns.oracle.com/ias/dtds/jazn-data-9_04.dtd”>
<jazn-data>

<!-- JAZN Realm Data -->
<jazn-realm>
<realm>
<name>jazn.com</name>

<name>anonymous</name>
<description>The default guest/anonymous user</description>

<name>900080</name>
<credentials>{903}o9BHVNXAPjIbUfWUiMIItIYp0SW2naTk</credentials>

<roles>
<role>
<name>jmxusers</name>
<display-name>JMX users</display-name>
<description>Allows access to application level user defined MBeans</description>
<members>
</members>
</role>
<role>
<name>administrators</name>
<display-name>Realm Admin Role</display-name>
<description>Administrative role for this realm.</description>
<members>
<member>
<type>user</type>
<name>900080</name>
</member>
</members>
</role>
<role>
<name>guests</name>
<members>
<member>
<type>user</type>
<name>anonymous</name>
</member>
</members>
</role>
</roles>
</realm>
</jazn-realm>

</jazn-data>

Criado 24 de maio de 2004
Respostas 0
Participantes 1