我正在尝试为我的Java应用程序实现JAAS安全性。在Windows 7操作系统上一切正常,但是当我在CentOS6服务器上尝试做同样的事情时,JAAS不起作用:由于404(未找到)错误,安全服务不可用。
这是我的代码:
第二行catalina.sh(在#!/ bin / sh行之后):
JAVA_OPTS="$JAVA_OPTS -Djava.security.auth.login.config==$CATALINA_HOME/conf/jaas.config"
CONF /的jaas.config:
SomeLogin {
package.SomeLoginModule required debug=true;
};
项目/ META-INF / context.xml中:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Realm className="org.apache.catalina.realm.JAASRealm"
appName="SomeLogin"
userClassNames="package.UserPrincipal"
roleClassNames="package.RolePrincipal" />
</Context>
项目/ WEB-INF / web.xml中:
<security-constraint>
<web-resource-collection>
<web-resource-name>Registration</web-resource-name>
<url-pattern>/xml/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager</role-name>
<role-name>channel</role-name>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<role-name>manager</role-name>
<role-name>channel</role-name>
<role-name>admin</role-name>
</security-role>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.html</form-login-page>
<form-error-page>/error.html</form-error-page>
</form-login-config>
</login-config>
另外,我尝试使用设置的java.security.auth.login.config属性添加JAVA_OPTS和CATALINA_OPTS等环境变量,但没有任何帮助。
我已经使用-security标志启动了Tomcat,但它似乎与JAAS无关。如果我错了,请纠正我。
当我尝试获取某些/ xml / *路径时,它只返回404错误。如果我更改web.xml以使应用程序不安全,一切正常。
我尝试在Windows操作系统上重现这种情况,但没有任何帮助:登录页面始终显示。
有人可以帮助我找出我错过的东西吗?
我的环境:Tomcat 6.0.37,CXF,Java 6u45,CentOS6(x64) - JAAS不起作用/ Windows 7(x64) - JAAS可以工作。
P.S。如果您需要Principals和LoginModule代码,请告诉我。
UPD:我发现错误与ServletController
有关无法找到[登录到login.html页面的地址] Observer(ServletController.java:161)的请求
谢谢, R上。