我需要使用JBoss AS 6在SLSB中获取调用者的用户名。因此,我将它传递给InitialContext,如下所示:
Context ctx = new InitialContext();
String userName = System.getProperty("user.name");
ctx.addToEnvironment(Context.SECURITY_PRINCIPAL, userName);
在我的SLSB中,我尝试使用以下方式访问它:
@Resource
EJBContext ctx;
// ...
String userName = ctx.getCallerPrincipal().getName();
但是,我从JBoss收到以下错误:
java.lang.IllegalStateException: No valid security context for the caller identity
at org.jboss.ejb3.EJBContextImpl.getCallerPrincipal(EJBContextImpl.java:143)
有人可以给我一个提示,我必须在JAAS Universe中配置哪个JBoss AS文件才能启动并运行?
答案 0 :(得分:1)
我的问题的答案在
中提供由于我目前不需要身份验证/授权,我只是在文件conf / login-conf.xml的末尾添加了以下行:
<application-policy name="simple">
<authentication>
<login-module code="org.jboss.security.auth.spi.SimpleServerLoginModule" flag="required" />
</authentication>
</application-policy>
注意安全风险!!! 使用SimpleServerLoginModule我的解决方案没有任何安全性!