我将JBoss EAP 6.4用于我的企业应用程序,当我尝试检索活动主题时,我有点卡住了。
当然,用户需要进行身份验证,通过以下代码片段进行身份验证
final Subject subject = (Subject)PolicyContext.getContext("javax.security.auth.Subject.container");
这样做很好(并填写了主题),但问题出在我尝试在执行的稍后时间检索主题时...
subject
...其中String test = "hello my name is mario";
String result = "";
int c = 1;
for (int i = 0; i < test.length(); i++) {
if (c++==5) {
result += "X";
c = 1;
} else {
result += test.charAt(i);
}
}
System.out.println("result = " + result);
仍然为空!
我错过了什么?
非常感谢任何帮助。
答案 0 :(得分:1)
<强>解决!强>
感谢关于how to introduce the security manager on JBoss EAP 6.4的以下文章。
问题是必须在JBoss中配置安全管理器。您需要打开standalone.conf(或standalone.conf.bat),取消注释并添加以下内容:
rem # Uncomment this to run with a security manager enabled
set "SECMGR=true"
rem # Using == when setting -Djava.security.policy specifies that the security manager
rem # will use only the specified policy file. Using = specifies that the security
rem # manager will use the specified policy combined with the policy set in the policy.url
rem # section of JAVA_HOME/lib/security/java.security.
set "JAVA_OPTS=%JAVA_OPTS% -Djava.security.policy==%JBOSS_HOME%\bin\server.policy"
这将启用安全管理器并使其指向自定义server.policy,我有以下示例:
grant {
permission java.security.AllPermission;
};
这将赋予任何模块运行的所有权限。当然,如果你想加强安全性,你需要编辑策略文件。
检索Subject
也很简单:
Subject.getSubject(AccessController.getContext());
那就是它!我希望它也可以为你们工作。