gpt4 book ai didi

java - 如何向 EJB 3.0 服务器验证应用程序客户端

转载 作者:行者123 更新时间:2023-12-04 07:08:45 24 4
gpt4 key购买 nike

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

我在机器 A 上有一个带有登录名、密码字段的 Swing 客户端。

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 ?我如何让整个事情发挥作用?

我只是想构建一个看似微不足道的东西:应用程序客户端的授权。我觉得我好笨。

非常感谢。

最佳答案

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

我还有很多其他 JAAS 资源书,标记为 http://delicious.com/chronosMark/JAAS如果其他两个不帮助,希望其中一个可以帮助您。

关于java - 如何向 EJB 3.0 服务器验证应用程序客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/700529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com