请教:Jboss jaas 进行安全性验证在ejb3中

本文探讨了在JBoss环境中使用JAAS进行安全配置的方法,包括配置jboss-web.xml、login-config.xml及login.config文件的具体步骤。同时,通过一个具体的EJB3示例,展示了如何进行身份验证并调用远程服务。文章最后分析了一个常见的异常javax.ejb.EJBAccessException: caller unauthorized的原因,并提出了可能的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在研究jaas
我配置了
jboss-web.xml
<jboss-web>
<security-domain>java:/jaas/ioffice</security-domain>
</jboss-web>
login-config.xml
<application-policy name = "ioffice">
<authentication>
<login-module code ="ioffice.pub.auth.loginmodule.iofficeloginmodule" flag = "required" />
</authentication>
</application-policy>
以及login.config文件
ioffice {
// a properties file loginmodule that supports callerprincipal mapping
org.jboss.security.clientloginmodule required unauthenticatedidentity=nobody;
};
我在 ejb3中进行测试
hashtable props = new hashtable();
props.put(context.initial_context_factory,
"org.jnp.interfaces.namingcontextfactory");
props.put(context.url_pkg_prefixes,
"org.jboss.naming:org.jnp.interfaces");
props.put(context.provider_url, "jnp://localhost:1099");

iofficecallbackhandler handler = new iofficecallbackhandler(
"admin@ben.ioe.cn", "admin".tochararray());


logincontext lc = new logincontext("ioffice", (callbackhandler) handler);
lc.login();
initialcontext ctx = new initialcontext(props);

basic = (publicbasic) ctx.lookup("publicbasicbean/remote");


在publicbasicbean中
@stateless
@remote(publicbasic.class)
@securitydomain("ioffice")
public class publicbasicbean implements publicbasic {
@rolesallowed({ "basicuser", "domainadministrator", "poweruser" })
public java.util.collection getprivatecontacts() {
try {
return xxx....
} catch (exception e) {

}
}
}
为什么出现
javax.ejb.ejbaccessexception: caller unauthorized
at org.jboss.ejb3.security.rolebasedauthorizationinterceptorv2.invoke(rolebasedauthorizationinterceptorv2.java:199)
at org.jboss.aop.joinpoint.methodinvocation.invokenext(methodinvocation.java:102)
at org.jboss.ejb3.security.ejb3authenticationinterceptorv2.invoke(ejb3authenticationinterceptorv2.java:186)
at org.jboss.aop.joinpoint.methodinvocation.invokenext(methodinvocation.java:102)
at org.jboss.ejb3.encpropagationinterceptor.invoke(encpropagationinterceptor.java:41)
at org.jboss.aop.joinpoint.methodinvocation.invokenext(methodinvocation.java:102)
at org.jboss.ejb3.blockcontainershutdowninterceptor.invoke(blockcontainershutdowninterceptor.java:67)
at org.jboss.aop.joinpoint.methodinvocation.invokenext(methodinvocation.java:102)
at org.jboss.aspects.currentinvocation.currentinvocationinterceptor.invoke(currentinvocationinterceptor.java:67)
at org.jboss.aop.joinpoint.methodinvocation.invokenext(methodinvocation.java:102)
at org.jboss.ejb3.stateless.statelesscontainer.dynamicinvoke(statelesscontainer.java:421)
at org.jboss.ejb3.session.invokablecontextclassproxyhack._dynamicinvoke(invokablecontextclassproxyhack.java:53)
at org.jboss.aop.dispatcher.invoke(dispatcher.java:91)
at org.jboss.aspects.remoting.aopremotinginvocationhandler.invoke(aopremotinginvocationhandler.java:82)
希望高手能给解决一下,并给讲讲jaas
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值