Comment authentifier un client d'application serveur EJB 3.0
Question
Je suis très nouveau à l'ensemble de l'architecture J2EE. Quelqu'un pourrait-il me aider?
J'ai un client Swing avec Connexion, champs de mot de passe sur la machine A.
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
p.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
p.put(Context.PROVIDER_URL, "jnp://localhost:1099/");
InitialContext ctx = new InitialContext(p);
ejb = (MyBeanRemote) ctx.lookup("DemoServer/MyBean/remote");
J'ai un EJB 3.0 sur JBoss5 sur la machine B:
@Stateful
@DeclareRoles({"editor", "viewer"})
public class MyBean implements MyBeanRemote, Serializable {
@RolesAllowed({"editor"})
public boolean modify() throws Exception {
if(!ctx.isCallerInRole("editor")) throw new SecurityException("Can't modify");
return true;
}
@RolesAllowed({"viewer","editor"})
public boolean view() throws Exception {
if(!ctx.isCallerInRole("viewer")) throw new SecurityException("Can't view");
return true;
}
}
J'ai un DB avec les utilisateurs et les rôles sur le serveur (conf / login-conf.xml):
<application-policy name="jboss-secure">
<authentication>
<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
<module-option name="unauthenticatedIdentity">guest</module-option>
<module-option name="dsJndiName">java:/MyDerby</module-option>
<module-option name="principalsQuery">SELECT Password FROM Users WHERE Username=?</module-option>
<module-option name="rolesQuery">SELECT Role, 'Roles' FROM Users WHERE Username=?</module-option>
</login-module>
</authentication>
</application-policy>
META-INF / jboss.xml:
<jboss>
<security-domain>java:/jaas/jboss-secure</security-domain>
</jboss>
Si je comprends bien, je ne devrais pas me référence ejb jusqu'à ce que le client est authentifié correctement. Comment puis-je utiliser LoginContext, et dois-je utiliser du tout? Puis / devrais-je utiliser @EJB private MyBeanRemote ejb
? Et comment puis-je faire tout le travail chose?
Je suis juste en train de construire une chose apparemment anodin: autorisation du client d'application. Je me sens stupide.
Merci beaucoup.
La solution
J'ai travaillé avec JAAS recentely et trouvé, il peut être assez difficile. Découvrez ces deux ressources que je les ai trouvés très utile http://www.jaasbook.com/ et http://docs.jboss.org/jbossas/admindevel326/html/ch8. chapter.html
J'ai aussi une charge d'autre livre de ressources JAAS marquée http://delicious.com/chronosMark / JAAS espérons-un d'entre eux vous aidera à savoir si les deux autres ne le font pas.
Autres conseils
Il y a un tutoriel ici