问题来了,
JAAS 领域连接数据库正常,用户名和密码匹配,会话通过身份验证。但是,似乎没有一个角色进入校长。Tomcat 的 isInUserRole 对每个角色都返回 false,并且 tomcat 安全性也看不到它们。
这是 Server.xml 中的领域配置
<Realm className="org.apache.catalina.realm.JAASRealm"
appName="TomcatTimedLogin"
userClassName="com.tagish.auth.TypedPrincipal"
roleClassNames="org.ovasp.java.jaas.RolePrincipal" />
这是login.config
TomcatTimedLogin
{
org.owasp.java.jaas.TomcatTimedLogin required
useDS=true
dsJNDI="jdbc/resourceName"
dbDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
dbURL="jdbc:sqlserver://server\\DBSERVER;databaseName=DBName"
dbUser="username"
dbPassword="password"
debug=true
loginTable="loginTable"
clippingLevel="3"
interval="10"
loginQuery="SELECT UserID,Password FROM Users WHERE LogonUserName=? AND RetirementDate is null"
rolesQuery="SELECT Role.RoleDescription FROM User_Role,Role WHERE User_Role.UserID=? AND User_Role.RoleID=Role.RoleID";
};
在 catalina.properties 我指的是这样的配置
java.security.auth.login.config=file:///C:/config/login.config
启动应用程序时,我确实在调试输出中收到以下消息,不知道为什么所有类都应该可以被服务器访问
SEVERE: Class org.ovasp.java.jaas.RolePrincipal not found! Class not added.
任何帮助,将不胜感激。我已经阅读了一个又一个的帖子和一个又一个的教程,而那些确实有这个问题的人,没有发布解决方案。
顺便说一句,我使用的是 Tomcat 5.5,不是我的选择,遗留代码,你知道它是怎么回事!我还使用 OWASP 登录模块 (OWASPJaasLoginModule.jar)。此 jar 文件位于 server/lib 目录中。