代码之家  ›  专栏  ›  技术社区  ›  Zoidberg

对于Tomcat中的所有角色,jaas-isUserInRole返回false

  •  3
  • Zoidberg  · 技术社区  · 16 年前

    问题是,

    JAAS领域连接到数据库,用户名和密码匹配,会话经过身份验证。然而,这些角色似乎都没有进入校长的行列。对于每个角色,Tomcat的isinUserRole都返回false,而Tomcat Security也没有看到它们。

    以下是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.
    

    任何帮助都将不胜感激。我已经阅读了一篇又一篇的贴子和一篇又一篇的教程,而那些有这个问题的人,并没有发布解决方案。

    顺便说一句,我使用的是Tomcat5.5,而不是我的选择,遗留代码,你知道的!我还使用了owasp登录模块(owaspjaasloginmodule.jar)。这个JAR文件位于server/lib目录中。

    1 回复  |  直到 16 年前
        1
  •  1
  •   Zoidberg    16 年前

    可以。。。我自己解决了…又一次,非常愚蠢!如果这是我的代码,我会生自己的气,但事实并非如此,而且经过4天对这个应用程序的纠结,我几乎已经受够了。问题是这个班不是

    org.ovasp.java.jaas.RolePrincipal
    

    它的

    org.owasp.java.jaas.RolePrincipal
    

    愚蠢的!!!!

    推荐文章