When authentication and authorization aren't behaving the way you'd like, the first step is turning on security-related debug output. This involves editing a Log4J configuration file.

Background Information

There are two general settings in log4j.xml that can affect logging:

Steps

  1. Make a backup copy of pentaho.war/WEB-INF/classes/log4j.xml.
  2. Open log4j.xml. Remove any Threshold param that occurs in all of the appenders (i.e. FILE or CONSOLE).
    <appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
      <!-- THRESHOLD REMOVED -->
    </appender>
    
    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
      <!-- THRESHOLD REMOVED -->
    </appender>
    
  3. Staying in the same file, find the root logger definition. Add or change the existing priority to WARN, ERROR, or FATAL. All loggers will inherit this level except where it is overridden (which is done in the next step).
    <root>
      <priority value="WARN" />
      <appender-ref ref="CONSOLE" />
      <appender-ref ref="FILE" />
    </root>
    
  4. Staying in the same file, add the following loggers before the root element. This will enable debug-level output in security-related classes.

    Note: When you add category elements, be sure to add them before the root element. Otherwise, you will violate the DTD for log4j.xml.

    <!-- all Acegi Security classes will be set to DEBUG -->
    <category name="org.acegisecurity">
      <priority value="DEBUG" />
    </category>
    
    <!-- all Pentaho security-related classes will be set to DEBUG -->
    <category name="com.pentaho.security">
      <priority value="DEBUG" />
    </category>
    
  5. Now open pentaho-solutions/system/applicationContext-acegi-security-<back-end>.xml where <back-end> is one of memory, jdbc, or ldap. Which one you open will depend on the type of security back-end you've configured in web.xml. Add a property called hideUserNotFoundExceptions with value false to the bean with id daoAuthenticationProvider. You're modified bean should look like the bean below. Note that existing properties and constructor-args elements for this bean should be left unmodified.
    <bean id="daoAuthenticationProvider" class="authentication_provider_class_not_shown">
      <!-- other properties/constructor-args not shown -->
      <property name="hideUserNotFoundExceptions" value="false" />
    </bean>
    
  6. Save the file and restart your servlet container or application server.

What to Look For

References

http://wiki.apache.org/logging-log4j/Log4jXmlFormat