2009-11-03 43 views
3

這裏是問題,JAAS - 的isUserInRole所有角色返回false在Tomcat中

的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目錄中。

回答

1

好吧......我自己解決了......再次,非常愚蠢!如果這是我的代碼,我會對自己生氣,但事實並非如此,經過4天的這個應用程序,我已經厭倦了。問題是,該類不是

org.ovasp.java.jaas.RolePrincipal 

org.owasp.java.jaas.RolePrincipal 

愚蠢!

相關問題