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.

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top