문제

여기에 문제가 있습니다.

JAAS 영역은 데이터베이스에 잘 연결되고 사용자 이름과 비밀번호가 일치하며 세션이 인증됩니다.그러나 어떤 역할도 Principal에 포함되지 않는 것 같습니다.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 디렉토리에 있습니다.

도움이 되었습니까?

해결책

좋아요...제가 직접 해결했어요...다시 말하지만, 아주 멍청해요!이것이 내 코드라면 나는 나 자신에게 화를 낼 것이지만 그렇지 않습니다. 그리고 이 앱을 4일 동안 만지작거린 후에 나는 거의 지쳤습니다.문제는 CLASS가 그렇지 않다는 것입니다.

org.ovasp.java.jaas.RolePrincipal

그것은

org.owasp.java.jaas.RolePrincipal

멍청한!!!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top