JAAS - isUserInRole为Tomcat中的所有角色返回false

时间:2009-11-03 15:33:15

标签: authentication tomcat jaas tomcat5.5

这是问题,

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

启动应用程序时,我在Debug输出中收到以下消息,不知道为什么服务器应该可以访问所有类

SEVERE: Class org.ovasp.java.jaas.RolePrincipal not found! Class not added.

任何帮助将不胜感激。我已经阅读过帖子后的帖子和教程后的教程,并且那些确实有这个问题的人没有发布解决方案。

不过,我使用的是Tomcat 5.5,而不是我选择的遗留代码,你知道它是怎么回事!我还使用OWASP登录模块(OWASPJaasLoginModule.jar)。此jar文件位于server / lib目录中。

1 个答案:

答案 0 :(得分:1)

好的......我自己解决了......再次,非常愚蠢!如果这是我的代码,我会对自己生气,但事实并非如此,并且在使用此应用程序四天后,我已经接近厌倦了。问题是CLASS不是

org.ovasp.java.jaas.RolePrincipal

org.owasp.java.jaas.RolePrincipal

STUPID !!!