sebastianb
Erfahrenes Mitglied
Hi zusammen,
im Rahmen eines Semesterprojekts "muss" ich mich aktuell mit EJB, JBoss und deren Security beschäftigen.
Zum Einstieg habe ich folgendes Tutorial
http://www.tutorials.de/forum/enter...-zum-thema-websecurity-mit-jboss-4-0-2-a.html
übernommen, welches auch wunderbar funktioniert (Hierfür beide Daumen hoch an Thomas
)
Jetzt stehe ich vor dem Problem meine EJB-Anwendung bzw deren Methoden abzusichern, welche ich über RMI aus einer JSP aufrufe.
Hierfür habe ich folgende Annotations hinzugefügt:
außerdem habe in META-INF die Datei jboss.xml hinzugefügt:
Den Aufruf aus der JSP habe ich mir wie folgt gedacht:
Offensichtlich habe ich mir das ganze aber etwas zu leicht gemacht, denn sobald die test() Methode aufgerufen wird, fliegt mir ne EJBAcessException um die Ohren: InvalidUser.
Kann mir jemand vll auf die Sprünge helfen?
Hier noch mein System:
Ubuntu: 9.04
MySql: 5.1.31
JBoss: 5.1.0-GA
Java: 1.6.0_16
Viele Grüße und schonmal vielen Dank!
Sebastian
im Rahmen eines Semesterprojekts "muss" ich mich aktuell mit EJB, JBoss und deren Security beschäftigen.
Zum Einstieg habe ich folgendes Tutorial
http://www.tutorials.de/forum/enter...-zum-thema-websecurity-mit-jboss-4-0-2-a.html
übernommen, welches auch wunderbar funktioniert (Hierfür beide Daumen hoch an Thomas

Jetzt stehe ich vor dem Problem meine EJB-Anwendung bzw deren Methoden abzusichern, welche ich über RMI aus einer JSP aufrufe.
Hierfür habe ich folgende Annotations hinzugefügt:
Code:
@Stateless
public class TestBean implements TestBeanRemote {
@PersistenceContext(unitName="testCoreUnit")
EntityManager em;
@Resource
SessionContext context;
@RolesAllowed("admin")
public Employee test() {
Employee e = new Employee("Mustermann", "Max", "1234", new Company("Ich AG"));
System.out.println(e);
System.out.println(context.getCallerPrincipal());
return e;
}
}
außerdem habe in META-INF die Datei jboss.xml hinzugefügt:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<jboss>
<security-domain>TestSecurityDomain</security-domain>
</jboss>
Den Aufruf aus der JSP habe ich mir wie folgt gedacht:
Code:
<%@ page
import="java.util.*"
import="javax.naming.*"
import="javax.rmi.PortableRemoteObject"
import="de.hfu.test.ejb.core.beans.*"
import="javax.ejb.EJBAccessException" %> <%
try
{
Properties p = new Properties();
p.put(Context.SECURITY_CREDENTIALS,"geheim");
p.put(Context.SECURITY_PRINCIPAL,"admin");
p.put(Context.INITIAL_CONTEXT_FACTORY,"org.jboss.security.jndi.JndiLoginInitialContextFactory");
p.put(Context.URL_PKG_PREFIXES,"org.jboss.naming:org.jnp.interfaces");
p.put(Context.PROVIDER_URL, "jnp://localhost:1099");
Context ctx = new InitialContext(p);
Object ref = ctx.lookup(TestBeanRemote.JNDI_NAME);
TestBeanRemote tbr = (TestBeanRemote) PortableRemoteObject
.narrow(ref, TestBeanRemote.class);
tbr.test();
}
catch(EJBAccessException e)
{
e.printStackTrace();
}
Offensichtlich habe ich mir das ganze aber etwas zu leicht gemacht, denn sobald die test() Methode aufgerufen wird, fliegt mir ne EJBAcessException um die Ohren: InvalidUser.
Kann mir jemand vll auf die Sprünge helfen?
Hier noch mein System:
Ubuntu: 9.04
MySql: 5.1.31
JBoss: 5.1.0-GA
Java: 1.6.0_16
Viele Grüße und schonmal vielen Dank!
Sebastian