troubles using JAASRealm with SecurityFilter

Matthew Hixson <[email protected]> Tue, 29 Jul 2008 21:13:53 -0700
Newsgroups gmane.comp.java.securityfilter.user
Message-ID <[email protected]>
I have a webapp running in Tomcat 6.0.16 that uses a JAASRealm and a  
custom LoginModule to log in our users.  Since some of our users are  
having some bizarre problem with Tomcat's /j_security_check I thought  
I'd give SecurityFilter a try.
   I have added the servlet and servlet-mapping to my web.xml and  
moved all of the security related stuff from web.xml into  
securityfilter-config.xml.  Here's a trimmed down version of that file.

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE securityfilter-config PUBLIC
     "-//SecurityFilter.org//DTD Security Filter Configuration 2.0//EN"
     "http://www.securityfilter.org/dtd/securityfilter-config_2_0.dtd">

<securityfilter-config>

<security-constraint>
     <web-resource-collection>
       <web-resource-name>Subscriber Area</web-resource-name>
       <url-pattern>/members/*</url-pattern>
       <http-method>DELETE</http-method>
       <http-method>GET</http-method>
       <http-method>POST</http-method>
       <http-method>PUT</http-method>
     </web-resource-collection>
     <auth-constraint>
       <role-name>user</role-name>
     </auth-constraint>
   </security-constraint>

   <login-config>
     <auth-method>FORM</auth-method>
     <form-login-config>
       <form-login-page>/login.jsp</form-login-page>
       <form-error-page>/login.jsp?err=1</form-error-page>
       <form-default-page>/index.jsp</form-default-page>
     </form-login-config>
   </login-config>

     <security-role>
      <description>user</description>
    <role-name>user</role-name>
   </security-role>

    <!-- start with a Catalina realm adapter to wrap the Catalina  
realm defined below -->
    <realm  
className="org.securityfilter.realm.catalina.CatalinaRealmAdapter" />

    <realm className="org.apache.catalina.realm.JAASRealm">
        <realm-param name="appName" value="MyCustomLoginModule"/>
        <realm-param name="userClassNames"  
value="com.company.authentication.User"/>
        <realm-param name="roleClassNames"  
value="com.company.authentication.Role"/>
    </realm>

</securityfilter-config>

Right when I start up Tomcat I get the following exception.  Anyone  
know what I'm doing wrong or know of a workaround?
   Thanks,
    -M@


Jul 29, 2008 9:03:09 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
Jul 29, 2008 9:03:09 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8443
Jul 29, 2008 9:03:09 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 677 ms
Jul 29, 2008 9:03:09 PM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Jul 29, 2008 9:03:09 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.16
Jul 29, 2008 9:03:10 PM org.apache.catalina.realm.RealmBase init
SEVERE: Parent not available yet: null:type=Engine
Jul 29, 2008 9:03:10 PM org.apache.catalina.realm.RealmBase init
SEVERE: Can't register null
java.lang.NullPointerException
	at org.apache.catalina.realm.RealmBase.init(RealmBase.java:1370)
	at org.apache.catalina.realm.RealmBase.start(RealmBase.java:1034)
	at org.apache.catalina.realm.JAASRealm.start(JAASRealm.java:549)
	at  
org 
.securityfilter 
.realm 
.catalina.CatalinaRealmAdapter.setRealm(CatalinaRealmAdapter.java:79)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at  
sun 
.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 
39)
	at  
sun 
.reflect 
.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 
25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at  
org.securityfilter.config.SecurityConfig.addRealm(SecurityConfig.java: 
233)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at  
sun 
.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 
39)
	at  
sun 
.reflect 
.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 
25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at  
org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java: 
252)
	at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:256)
	at org.apache.commons.digester.Rule.end(Rule.java:276)
	at org.apache.commons.digester.Digester.endElement(Digester.java:1058)
	at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown  
Source)
	at  
org.apache.xerces.impl.dtd.XMLDTDValidator.endNamespaceScope(Unknown  
Source)
	at  
org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(Unknown  
Source)
	at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(Unknown  
Source)
	at  
org 
.apache 
.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown  
Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl 
$FragmentContentDispatcher.dispatch(Unknown Source)
	at  
org 
.apache 
.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
	at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
	at org.apache.commons.digester.Digester.parse(Digester.java:1548)
	at  
org 
.securityfilter.config.SecurityConfig.loadConfig(SecurityConfig.java: 
376)
	at org.securityfilter.filter.SecurityFilter.init(SecurityFilter.java: 
212)
	at  
org 
.apache 
.catalina 
.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java: 
275)
	at  
org 
.apache 
.catalina 
.core 
.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
	at  
org 
.apache 
.catalina 
.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
	at  
org 
.apache.catalina.core.StandardContext.filterStart(StandardContext.java: 
3709)
	at  
org.apache.catalina.core.StandardContext.start(StandardContext.java: 
4356)
	at  
org 
.apache 
.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java: 
771)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java: 
525)
	at  
org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java: 
924)
	at  
org 
.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java: 
887)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java: 
492)
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1147)
	at  
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java: 
311)
	at  
org 
.apache 
.catalina 
.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java: 
1053)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java: 
1045)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java: 
443)
	at  
org.apache.catalina.core.StandardService.start(StandardService.java:516)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java: 
710)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at  
sun 
.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 
39)
	at  
sun 
.reflect 
.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 
25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/