【问题标题】:How do I authenticate an application client to EJB 3.0 server如何向 EJB 3.0 服务器验证应用程序客户端
【发布时间】:2009-03-31 08:17:24
【问题描述】:

我对整个 J2EE 架构非常陌生。有人可以帮帮我吗?

我有一个 Swing 客户端,机器 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");

我在机器 B 上的 JBoss5 上有一个 EJB 3.0:

@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;
    }
}

我在服务器上有一个包含用户和角色的数据库 (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>

据我了解,在客户端通过正确身份验证之前,我不应该获得 ejb 引用。我如何使用 LoginContext,我到底要不要使用它?我可以/应该使用@EJB private MyBeanRemote ejb吗?以及如何让整个事情发挥作用?

我只是在尝试构建一个看似微不足道的东西:应用程序客户端的授权。我觉得自己很傻。

非常感谢。

【问题讨论】:

  • 您能分享一下您是如何实现上述目标的吗?

标签: java security jakarta-ee ejb-3.0 jaas


【解决方案1】:

我最近在 JAAS 上做了一些工作,发现它可能相当棘手。查看这两个资源,我发现它们非常有用 http://www.jaasbook.com/http://docs.jboss.org/jbossas/admindevel326/html/ch8.chapter.html

我还有一大堆其他 JAAS 资源书,标记为 http://delicious.com/chronosMark/JAAS,希望如果其他两个不这样做,其中一个会帮助您。

【讨论】:

  • 我已经全部检查过了,我真的不再需要这个了。不过还是谢谢。这是最好的答案。希望它对某些人有用。
【解决方案2】:

有教程here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    相关资源
    最近更新 更多