Method call why not be intercepted by MethodSecurityIntercep
Hi,Ben
Thanks for your response!
I've tried MethodSecurityInterceptor. Below is my application context config and some code snippet, it's a long post:).
The application is based on an old architecture, business method is called in jsp code, so I write a Spring bean as a wrapper
of the business method code, e.g. call PositionManager.getPositions in SecurityPositionManager.getPositions. See the code
example below.
With contacts example as the template:), I changed something, it works except that method calls aren't intercepted by MethodSecurityInterceptor.
Because I'm a newbie to Spring & AcegiSecurity,maybe I don't really understand some idea.
1.applicationContext-acegi-security.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- ======================== AUTHENTICATION ======================= -->
<bean id="authenticationManager" class="net.sf.acegisecurity.providers.ProviderManager">
<property name="providers">
<list>
<ref local="daoAuthenticationProvider"/>
</list>
</property>
</bean>
<bean id="jdbcDaoImpl" class="net.sf.acegisecurity.providers.dao.jdbc.JdbcDaoImpl">
<property name="dataSource"><ref bean="dataSource"/></property>
</bean>
<bean id="passwordEncoder" class="net.sf.acegisecurity.providers.encoding.Md5PasswordEncoder"/>
<bean id="daoAuthenticationProvider" class="net.sf.acegisecurity.providers.dao.DaoAuthenticationProvider">
<property name="authenticationDao"><ref local="jdbcDaoImpl"/></property>
<property name="userCache"><ref local="userCache"/></property>
<property name="passwordEncoder"><ref local="passwordEncoder"/></property>
</bean>
<bean id="userCache" class="net.sf.acegisecurity.providers.dao.cache.EhCacheBasedUserCache">
<property name="minutesToIdle"><value>5</value></property>
</bean>
<bean id="loggerListener" class="net.sf.acegisecurity.providers.dao.event.LoggerListener"/>
<bean id="basicProcessingFilter" class="net.sf.acegisecurity.ui.basicauth.BasicProcessingFilter">
<property name="authenticationManager"><ref local="authenticationManager"/></property>
<property name="authenticationEntryPoint"><ref local="basicProcessingFilterEntryPoint"/></property>
</bean>
<bean id="basicProcessingFilterEntryPoint" class="net.sf.acegisecurity.ui.basicauth.BasicProcessingFilterEntryPoint">
<property name="realmName"><value>Security Realm</value></property>
</bean>
<bean id="httpSessionIntegrationFilter" class="net.sf.acegisecurity.ui.webapp.HttpSessionIntegrationFilter"/>
<!-- ===================== HTTP REQUEST SECURITY ==================== -->
<bean id="securityEnforcementFilter" class="net.sf.acegisecurity.intercept.web.SecurityEnforcementFilter">
<property name="filterSecurityInterceptor"><ref local="filterInvocationInterceptor"/></property>
<property name="authenticationEntryPoint"><ref local="authenticationProcessingFilterEntryPoint"/></property>
</bean>
<bean id="authenticationProcessingFilter" class="net.sf.acegisecurity.ui.webapp.AuthenticationProcessingFilter">
<property name="authenticationManager"><ref bean="authenticationManager"/></property>
<property name="authenticationFailureUrl"><value>/acegilogin.jsp?login_error=1</value></property>
<property name="defaultTargetUrl"><value>/</value></property>
<property name="filterProcessesUrl"><value>/j_acegi_security_check</value></property>
</bean>
<bean id="authenticationProcessingFilterEntryPoint" class="net.sf.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint">
<property name="loginFormUrl"><value>/acegilogin.jsp</value></property>
<property name="forceHttps"><value>false</value></property>
</bean>
<bean id="httpRequestAccessDecisionManager" class="net.sf.acegisecurity.vote.AffirmativeBased">
<property name="allowIfAllAbstainDecisions"><value>false</value></property>
<property name="decisionVoters">
<list>
<ref bean="roleVoter"/>
</list>
</property>
</bean>
<!-- Note the order that entries are placed against the objectDefinitionSource is critical.
The FilterSecurityInterceptor will work from the top of the list down to the FIRST pattern that matches the request URL.
Accordingly, you should place MOST SPECIFIC (ie a/b/c/d.*) expressions first, with LEAST SPECIFIC (ie a/.*) expressions last -->
<bean id="filterInvocationInterceptor" class="net.sf.acegisecurity.intercept.web.FilterSecurityInterceptor">
<property name="authenticationManager"><ref bean="authenticationManager"/></property>
<property name="accessDecisionManager"><ref local="httpRequestAccessDecisionManager"/></property>
<property name="objectDefinitionSource">
<value>
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
\A/secure/super.*\Z=ROLE_WE_DONT_HAVE
\A/secure/.*\Z=ROLE_SUPERVISOR,ROLE_USER
</value>
</property>
</bean>
</beans>
2.applicationContext-common-business.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>org.gjt.mm.mysql.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://127.0.0.1:3306/acegi</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>password</value>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource"><ref local="dataSource"/></property>
</bean>
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager"><ref bean="transactionManager"/></property>
<property name="transactionAttributeSource">
<value>
com.xxx.jaidwapfactory.security.SecurityManager.getAllRecipients=PROPAGATION_REQUIRED,readOnly
com.xxx.jaidwapfactory.security.SecurityManager.getAll=PROPAGATION_REQUIRED,readOnly
com.xxx.jaidwapfactory.security.SecurityManager.deletePermission=PROPAGATION_REQUIRED
com.xxx.jaidwapfactory.security.SecurityManager.addPermission=PROPAGATION_REQUIRED
</value>
</property>
</bean>
<bean id="dataSourcePopulator" class="com.xxx.jaidwapfactory.security.DataSourcePopulator">
<property name="dataSource"><ref local="dataSource"/></property>
</bean>
<bean id="securityDao" class="com.xxx.jaidwapfactory.security.SecurityDaoSpring">
<property name="dataSource"><ref local="dataSource"/></property>
</bean>
<bean id="securityManager" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces"><value>com.xxx.jaidwapfactory.security.SecurityManager</value></property>
<property name="interceptorNames">
<list>
<idref local="transactionInterceptor"/>
<!--idref bean="securityManagerSecurity"/-->
<idref local="securityManagerTarget"/>
</list>
</property>
</bean>
<bean id="securityManagerTarget" class="com.xxx.jaidwapfactory.security.SecurityManagerBackend">
<property name="securityDao"><ref local="securityDao"/></property>
<property name="basicAclExtendedDao"><ref bean="basicAclExtendedDao"/></property>
</bean>
<bean id="positionManager" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces"><value>com.xxx.jaidwapfactory.security.SecurityPositionManager</value></property>
<property name="interceptorNames">
<list>
<idref local="transactionInterceptor"/>
<idref bean="positionManagerSecurity"/>
<idref local="positionManagerTarget"/>
</list>
</property>
</bean>
<bean id="positionManagerTarget" class="com.xxx.jaidwapfactory.security.SecurityPositionManagerImpl">
<property name="basicAclExtendedDao"><ref bean="basicAclExtendedDao"/></property>
<property name="securityManager"><ref bean="securityManager"/></property>
</bean>
</beans>
3.applicationContext-common-authorization.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- ~~~~~~~~~~~~~~~~~~ "BEFORE INVOCATION" AUTHORIZATION DEFINITIONS ~~~~~~~~~~~~~~~~ -->
<!-- ACL permission masks used by this application -->
<bean id="net.sf.acegisecurity.acl.basic.SimpleAclEntry.ADMINISTRATION" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
<property name="staticField"><value>net.sf.acegisecurity.acl.basic.SimpleAclEntry.ADMINISTRATION</value></property>
</bean>
<bean id="net.sf.acegisecurity.acl.basic.SimpleAclEntry.READ" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
<property name="staticField"><value>net.sf.acegisecurity.acl.basic.SimpleAclEntry.READ</value></property>
</bean>
<bean id="net.sf.acegisecurity.acl.basic.SimpleAclEntry.DELETE" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
<property name="staticField"><value>net.sf.acegisecurity.acl.basic.SimpleAclEntry.DELETE</value></property>
</bean>
<!-- An access decision voter that reads ROLE_* configuration settings -->
<bean id="roleVoter" class="net.sf.acegisecurity.vote.RoleVoter"/>
<!-- An access decision voter that reads ACL_CONTACT_READ configuration settings -->
<bean id="aclPositionReadVoter" class="net.sf.acegisecurity.vote.BasicAclEntryVoter">
<property name="processConfigAttribute"><value>ACL_CONTACT_READ</value></property>
<property name="processDomainObjectClass"><value>com.xxx.jaidwapfactory.position.concrete.PositionImpl</value></property>
<property name="aclManager"><ref local="aclManager"/></property>
<property name="requirePermission">
<list>
<ref local="net.sf.acegisecurity.acl.basic.SimpleAclEntry.ADMINISTRATION"/>
<!--ref local="net.sf.acegisecurity.acl.basic.SimpleAclEntry.READ"/-->
</list>
</property>
</bean>
<!-- An access decision voter that reads ACL_CONTACT_DELETE configuration settings -->
<bean id="aclPositionDeleteVoter" class="net.sf.acegisecurity.vote.BasicAclEntryVoter">
<property name="processConfigAttribute"><value>ACL_CONTACT_DELETE</value></property>
<property name="processDomainObjectClass"><value>com.xxx.jaidwapfactory.position.concrete.PositionImpl</value></property>
<property name="aclManager"><ref local="aclManager"/></property>
<property name="requirePermission">
<list>
<ref local="net.sf.acegisecurity.acl.basic.SimpleAclEntry.ADMINISTRATION"/>
<ref local="net.sf.acegisecurity.acl.basic.SimpleAclEntry.DELETE"/>
</list>
</property>
</bean>
<!-- An access decision voter that reads ACL_CONTACT_ADMIN configuration settings -->
<bean id="aclPositionAdminVoter" class="net.sf.acegisecurity.vote.BasicAclEntryVoter">
<property name="processConfigAttribute"><value>ACL_CONTACT_ADMIN</value></property>
<property name="processDomainObjectClass"><value>com.xxx.jaidwapfactory.position.concrete.PositionImpl</value></property>
<property name="aclManager"><ref local="aclManager"/></property>
<property name="requirePermission">
<list>
<ref local="net.sf.acegisecurity.acl.basic.SimpleAclEntry.ADMINISTRATION"/>
</list>
</property>
</bean>
<bean id="positionAccessDecisionManager" class="net.sf.acegisecurity.vote.AffirmativeBased">
<property name="allowIfAllAbstainDecisions"><value>false</value></property>
<property name="decisionVoters">
<list>
<ref local="roleVoter"/>
<ref local="aclPositionReadVoter"/>
<ref local="aclPositionDeleteVoter"/>
<ref local="aclPositionAdminVoter"/>
</list>
</property>
</bean>
<bean id="securityAccessDecisionManager" class="net.sf.acegisecurity.vote.AffirmativeBased">
<property name="allowIfAllAbstainDecisions"><value>false</value></property>
<property name="decisionVoters">
<list>
<ref local="roleVoter"/>
</list>
</property>
</bean>
<!-- ========= ACCESS CONTROL LIST LOOKUP MANAGER DEFINITIONS ========= -->
<bean id="aclManager" class="net.sf.acegisecurity.acl.AclProviderManager">
<property name="providers">
<list>
<ref local="basicAclProvider"/>
</list>
</property>
</bean>
<bean id="basicAclProvider" class="net.sf.acegisecurity.acl.basic.BasicAclProvider">
<property name="basicAclDao"><ref local="basicAclExtendedDao"/></property>
</bean>
<bean id="basicAclExtendedDao" class="net.sf.acegisecurity.acl.basic.jdbc.JdbcExtendedDaoImpl">
<property name="dataSource"><ref bean="dataSource"/></property>
</bean>
<!-- ============== "AFTER INTERCEPTION" AUTHORIZATION DEFINITIONS =========== -->
<bean id="afterInvocationManager" class="net.sf.acegisecurity.afterinvocation.AfterInvocationProviderManager">
<property name="providers">
<list>
<ref local="afterAclRead"/>
<ref local="afterAclCollectionRead"/>
</list>
</property>
</bean>
<!-- Processes AFTER_ACL_COLLECTION_READ configuration settings -->
<bean id="afterAclCollectionRead" class="net.sf.acegisecurity.afterinvocation.BasicAclEntryAfterInvocationCollectionFilteringProvider">
<property name="aclManager"><ref local="aclManager"/></property>
<property name="requirePermission">
<list>
<ref local="net.sf.acegisecurity.acl.basic.SimpleAclEntry.ADMINISTRATION"/>
<ref local="net.sf.acegisecurity.acl.basic.SimpleAclEntry.READ"/>
</list>
</property>
</bean>
<!-- Processes AFTER_ACL_READ configuration settings -->
<bean id="afterAclRead" class="net.sf.acegisecurity.afterinvocation.BasicAclEntryAfterInvocationProvider">
<property name="aclManager"><ref local="aclManager"/></property>
<property name="requirePermission">
<list>
<ref local="net.sf.acegisecurity.acl.basic.SimpleAclEntry.ADMINISTRATION"/>
<ref local="net.sf.acegisecurity.acl.basic.SimpleAclEntry.READ"/>
</list>
</property>
</bean>
<!-- ================= METHOD INVOCATION AUTHORIZATION ==================== -->
<bean id="positionManagerSecurity" class="net.sf.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor">
<property name="authenticationManager"><ref bean="authenticationManager"/></property>
<property name="accessDecisionManager"><ref local="positionAccessDecisionManager"/></property>
<property name="afterInvocationManager"><ref local="afterInvocationManager"/></property>
<property name="objectDefinitionSource">
<value>
com.xxx.jaidwapfactory.security.SecurityPositionManager.addPosition=ROLE_USER
com.xxx.jaidwapfactory.security.SecurityPositionManager.removePosition=ACL_CONTACT_ADMIN
com.xxx.jaidwapfactory.security.SecurityPositionManager.getPositions=AFTER_ACL_COLLECTION_READ
com.xxx.jaidwapfactory.security.SecurityPositionManager.getPosition=AFTER_ACL_READ
</value>
</property>
</bean>
</beans>
4.contacts-servlet.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- ========================== WEB DEFINITIONS ======================= -->
<!--
<bean id="publicIndexController" class="com.xxx.jaidwapfactory.security.PublicIndexController">
<property name="contactManager"><ref bean="contactManager"/></property>
</bean>
-->
<bean id="secureIndexController" class="com.xxx.jaidwapfactory.security.SecureIndexController">
<property name="securityManager"><ref bean="securityManager"/></property>
</bean>
<!--
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hello.htm">publicIndexController</prop>
<prop key="/secure/add.htm">secureAddForm</prop>
<prop key="/secure/index.htm">secureIndexController</prop>
<prop key="/secure/del.htm">secureDeleteController</prop>
<prop key="/secure/adminPermission.htm">adminPermissionController</prop>
<prop key="/secure/deletePermission.htm">deletePermissionController</prop>
<prop key="/secure/addPermission.htm">addPermissionForm</prop>
</props>
</property>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix"><value>/</value></property>
<property name="suffix"><value>.jsp</value></property>
</bean>
-->
</beans>
5.web.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'>
<!--
- Security web application
-
- web.xml for "filter" artifact only.
-
- $Id: web.xml,v 1.1 2004/12/01 12:31:49 i Exp $
-->
<web-app>
<display-name>Security Sample Application</display-name>
<!--
- Location of the XML file that defines the root application context
- Applied by ContextLoaderListener.
-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext-acegi-security.xml
/WEB-INF/applicationContext-common-business.xml
/WEB-INF/applicationContext-common-authorization.xml
</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>
<!-- The <filter-mapping> to this filter is disabled by default -->
<!--
<filter>
<filter-name>Acegi Channel Processing Filter</filter-name>
<filter-class>net.sf.acegisecurity.util.FilterToBeanProxy</filter-class>
<init-param>
<param-name>targetClass</param-name>
<param-value>net.sf.acegisecurity.securechannel.ChannelProcessingFilter</param-value>
</init-param>
</filter>
-->
<!-- Responds to HTTP POSTs to j_acegi_security_check URI -->
<filter>
<filter-name>Acegi Authentication Processing Filter</filter-name>
<filter-class>net.sf.acegisecurity.util.FilterToBeanProxy</filter-class>
<init-param>
<param-name>targetClass</param-name>
<param-value>net.sf.acegisecurity.ui.webapp.AuthenticationProcessingFilter</param-value>
</init-param>
</filter>
<!-- Responds to HTTP requests with a BASIC (RFC 1945) authentication header -->
<!--
<filter>
<filter-name>Acegi HTTP BASIC Authorization Filter</filter-name>
<filter-class>net.sf.acegisecurity.util.FilterToBeanProxy</filter-class>
<init-param>
<param-name>targetClass</param-name>
<param-value>net.sf.acegisecurity.ui.basicauth.BasicProcessingFilter</param-value>
</init-param>
</filter>
-->
<!-- Obtains Authentication from HttpSession attribute, puts it into
ContextHolder for request duration, proceeds with request, then
copies Authentication from ContextHolder back into HttpSession -->
<filter>
<filter-name>Acegi Security System for Spring HttpSession Integration Filter</filter-name>
<filter-class>net.sf.acegisecurity.util.FilterToBeanProxy</filter-class>
<init-param>
<param-name>targetClass</param-name>
<param-value>net.sf.acegisecurity.ui.webapp.HttpSessionIntegrationFilter</param-value>
</init-param>
</filter>
<!-- Provides HTTP request URL security, and also catches
AcegiSecurityExceptions and sends 403 errors (if access denied)
or commences an authentication mechanism as appropriate -->
<filter>
<filter-name>Acegi HTTP Request Security Filter</filter-name>
<filter-class>net.sf.acegisecurity.util.FilterToBeanProxy</filter-class>
<init-param>
<param-name>targetClass</param-name>
<param-value>net.sf.acegisecurity.intercept.web.SecurityEnforcementFilter</param-value>
</init-param>
</filter>
<!-- Remove the comments from the following <filter-mapping> if you'd
like to ensure secure URLs are only available over HTTPS -->
<!--
<filter-mapping>
<filter-name>Acegi Channel Processing Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-->
<filter-mapping>
<filter-name>Acegi Authentication Processing Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--
<filter-mapping>
<filter-name>Acegi HTTP BASIC Authorization Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-->
<filter-mapping>
<filter-name>Acegi Security System for Spring HttpSession Integration Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Acegi HTTP Request Security Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--
- Loads the root application context of this web app at startup.
- The application context is then available via
- WebApplicationContextUtils.getWebApplicationContext(servletContext).
-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<!--
- Provides core MVC application controller. See contacts-servlet.xml.
-->
<servlet>
<servlet-name>contacts</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!--
- Provides web services endpoint. See remoting-servlet.xml.
-->
<!--
<servlet>
<servlet-name>remoting</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
-->
<servlet-mapping>
<servlet-name>contacts</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<!--
<servlet-mapping>
<servlet-name>remoting</servlet-name>
<url-pattern>/remoting/*</url-pattern>
</servlet-mapping>
-->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>/tags/spring</taglib-uri>
<taglib-location>/WEB-INF/tld/spring.tld</taglib-location>
</taglib>
<!--taglib>
<taglib-uri>/tags/authz</taglib-uri>
<taglib-location>/WEB-INF/tld/authz.tld</taglib-location>
</taglib-->
</web-app>
6./secure/position_browse.jsp
Code:
<%@page contentType="text/html;charset=gb2312"%>
<%@ include file="/WEB-INF/jsp/include.jsp" %>
<%@include file="header.jsp"%>
<%
ArrayList positions = securityPositionManager.getPositions();
%>
<HTML><HEAD><TITLE>WAP Test</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<link href="/inc/jaidstyle.css" rel=stylesheet type=text/css>
</HEAD>
<BODY>
<h3><authz:authentication operation="principal"/>'s Positions</h3>
<center>
<table width="98%" >
<tr>
<td colspan=6 class='title'>
Position List
</td>
</tr>
<tr>
<%Position p =null;
for(int i=0;i<positions.size();i++){
p = (Position)positions.get(i);
pageContext.setAttribute("p", p);
%>
<td style="word-wrap: break-word">
id:<a href="category_browse.jsp"><%=p.getId()%></a>
</td>
<td style="word-wrap: break-word">
Name:<%=p.getName()%></a>
</td>
<authz:acl domainObject="${p}" hasPermission="16,1">
<td>
<A HREF="deleted.jsp?positionId=<%=p.getId()%>">Del</A>
</td>
</authz:acl>
<authz:acl domainObject="${p}" hasPermission="1">
<td>
<A HREF="adminPermission.jsp?positionId=<%=p.getId()%>">Admin Permission</A>
</td>
</authz:acl>
</tr>
<%}%>
</table>
<p><a href="<c:url value="position_create.jsp"/>">Add</a> <p><a href="<c:url value="../logoff.jsp"/>">Logoff</a>
</center>
</BODY></HTML>
7./secure/header.jsp
Code:
<%@page import="java.util.*"%>
<%@page import="com.xxx.jaidwapfactory.category.*"%>
<%@page import="com.xxx.jaidwapfactory.position.*"%>
<%@page import="com.xxx.jaidwapfactory.security.*"%>
<%@page import="net.sf.acegisecurity.acl.*"%>
<%@page import="net.sf.acegisecurity.acl.basic.*"%>
<%@page import="org.springframework.context.ApplicationContext"%>
<%@page import="org.springframework.web.bind.RequestUtils"%>
<%@page import="org.springframework.web.context.support.WebApplicationContextUtils"%>
<%
PositionManager positionManager = PositionManager.getInstance();
CategoryManager categoryManager = CategoryManager.getInstance();
ApplicationContext context = getContext(pageContext.getServletContext());
Map beans = context.getBeansOfType(SecurityPositionManager.class, false, false);
String beanName = (String) beans.keySet().iterator().next();
SecurityPositionManager securityPositionManager = (SecurityPositionManager) context.getBean(beanName);
beans = context.getBeansOfType(com.xxx.jaidwapfactory.security.SecurityManager.class, false, false);
beanName = (String) beans.keySet().iterator().next();
com.xxx.jaidwapfactory.security.SecurityManager securityManager = (com.xxx.jaidwapfactory.security.SecurityManager) context.getBean(beanName);
beans = context.getBeansOfType(AclManager.class, false, false);
beanName = (String) beans.keySet().iterator().next();
AclManager aclManager = (AclManager) context.getBean(beanName);
%>
<%!
protected ApplicationContext getContext(ServletContext servletContext) {
return WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
}
%>
8.SecurityPositionManagerImpl.java
Code:
public ArrayList getPositions() {
return getPositionManager().getPositions();
}
9.PositionManagerImpl.java
Code:
public ArrayList getPositions() {
return positions;
}
ok, now it's the log
[code:1:61c233dd18]
14:47:17,703 WARN Configurator:125 - No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: jar:file:/D:/devhome/Tomcat5.5.4/webapps/acegijaid/WEB-INF/lib/ehcache-0.9.jar!/ehcache-failsafe.xml
14:47:18,644 DEBUG FilterInvocationDefinitionSourceEditor:97 - Line 1:
14:47:18,644 DEBUG FilterInvocationDefinitionSourceEditor:97 - Line 1:
14:47:18,654 DEBUG FilterInvocationDefinitionSourceEditor:97 - Line 2: CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
14:47:18,654 DEBUG FilterInvocationDefinitionSourceEditor:97 - Line 2: CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
14:47:18,715 DEBUG FilterInvocationDefinitionSourceEditor:106 - Line 2: Instructing mapper to convert URLs to lowercase before comparison
14:47:18,715 DEBUG FilterInvocationDefinitionSourceEditor:106 - Line 2: Instructing mapper to convert URLs to lowercase before comparison
14:47:18,725 DEBUG FilterInvocationDefinitionSourceEditor:97 - Line 3: \A/secure/super.*\Z=ROLE_WE_DONT_HAVE
14:47:18,725 DEBUG FilterInvocationDefinitionSourceEditor:97 - Line 3: \A/secure/super.*\Z=ROLE_WE_DONT_HAVE
14:47:18,765 DEBUG RegExpBasedFilterInvocationDefinitionMap:114 - Added regular expression: \A/secure/super.*\Z; attributes: [ROLE_WE_DONT_HAVE]
14:47:18,765 DEBUG RegExpBasedFilterInvocationDefinitionMap:114 - Added regular expression: \A/secure/super.*\Z; attributes: [ROLE_WE_DONT_HAVE]
14:47:18,765 DEBUG FilterInvocationDefinitionSourceEditor:97 - Line 4: \A/secure/.*\Z=ROLE_SUPERVISOR,ROLE_USER
14:47:18,765 DEBUG FilterInvocationDefinitionSourceEditor:97 - Line 4: \A/secure/.*\Z=ROLE_SUPERVISOR,ROLE_USER
14:47:18,815 DEBUG RegExpBasedFilterInvocationDefinitionMap:114 - Added regular expression: \A/secure/.*\Z; attributes: [ROLE_SUPERVISOR, ROLE_USER]
14:47:18,815 DEBUG RegExpBasedFilterInvocationDefinitionMap:114 - Added regular expression: \A/secure/.*\Z; attributes: [ROLE_SUPERVISOR, ROLE_USER]
14:47:18,815 DEBUG FilterInvocationDefinitionSourceEditor:97 - Line 5:
14:47:18,815 DEBUG FilterInvocationDefinitionSourceEditor:97 - Line 5:
14:47:18,815 INFO AbstractSecurityInterceptor:275 - Validated configuration attributes
14:47:18,815 INFO AbstractSecurityInterceptor:275 - Validated configuration attributes
14:47:22,320 INFO JdbcDaoImpl$AclsByObjectIdentityMapping:274 - RdbmsOperation with SQL [SELECT RECIPIENT, MASK FROM acl_permission WHERE acl_object_identity = ?] compiled
14:47:22,320 INFO JdbcDaoImpl$AclsByObjectIdentityMapping:274 - RdbmsOperation with SQL [SELECT RECIPIENT, MASK FROM acl_permission WHERE acl_object_identity = ?] compiled
14:47:22,330 INFO JdbcDaoImpl$ObjectPropertiesMapping:274 - RdbmsOperation with SQL [SELECT CHILD.ID, CHILD.OBJECT_IDENTITY, CHILD.ACL_CLASS, PARENT.OBJECT_IDENTITY as PARENT_OBJECT_IDENTITY FROM acl_object_identity as CHILD LEFT OUTER JOIN acl_object_identity as PARENT ON CHILD.parent_object=PARENT.id WHERE CHILD.object_identity = ?] compiled
14:47:22,330 INFO JdbcDaoImpl$ObjectPropertiesMapping:274 - RdbmsOperation with SQL [SELECT CHILD.ID, CHILD.OBJECT_IDENTITY, CHILD.ACL_CLASS, PARENT.OBJECT_IDENTITY as PARENT_OBJECT_IDENTITY FROM acl_object_identity as CHILD LEFT OUTER JOIN acl_object_identity as PARENT ON CHILD.parent_object=PARENT.id WHERE CHILD.object_identity = ?] compiled
14:47:22,330 INFO JdbcExtendedDaoImpl$LookupPermissionIdMapping: 274 - RdbmsOperation with SQL [SELECT id FROM acl_permission WHERE acl_object_identity = ? AND recipient = ?] compiled
14:47:22,330 INFO JdbcExtendedDaoImpl$LookupPermissionIdMapping: 274 - RdbmsOperation with SQL [SELECT id FROM acl_permission WHERE acl_object_identity = ? AND recipient = ?] compiled
14:47:22,340 INFO JdbcExtendedDaoImpl$AclPermissionInsert:274 - RdbmsOperation with SQL [INSERT INTO acl_permission (id, acl_object_identity, recipient, mask) VALUES (?, ?, ?, ?)] compiled
14:47:22,340 INFO JdbcExtendedDaoImpl$AclPermissionInsert:274 - RdbmsOperation with SQL [INSERT INTO acl_permission (id, acl_object_identity, recipient, mask) VALUES (?, ?, ?, ?)] compiled
14:47:22,340 INFO JdbcExtendedDaoImpl$AclObjectIdentityInsert:27 4 - RdbmsOperation with SQL [INSERT INTO acl_object_identity (id, object_identity, parent_object, acl_class) VALUES (?, ?, ?, ?)] compiled
14:47:22,340 INFO JdbcExtendedDaoImpl$AclObjectIdentityInsert:27 4 - RdbmsOperation with SQL [INSERT INTO acl_object_identity (id, object_identity, parent_object, acl_class) VALUES (?, ?, ?, ?)] compiled
14:47:22,350 INFO JdbcExtendedDaoImpl$AclPermissionDelete:274 - RdbmsOperation with SQL [DELETE FROM acl_permission WHERE acl_object_identity = ? AND recipient = ?] compiled
14:47:22,350 INFO JdbcExtendedDaoImpl$AclPermissionDelete:274 - RdbmsOperation with SQL [DELETE FROM acl_permission WHERE acl_object_identity = ? AND recipient = ?] compiled
14:47:22,360 INFO JdbcExtendedDaoImpl$AclObjectIdentityDelete:27 4 - RdbmsOperation with SQL [DELETE FROM acl_object_identity WHERE id = ?] compiled
14:47:22,360 INFO JdbcExtendedDaoImpl$AclObjectIdentityDelete:27 4 - RdbmsOperation with SQL [DELETE FROM acl_object_identity WHERE id = ?] compiled
14:47:22,550 INFO JdbcExtendedDaoImpl$AclPermissionUpdate:274 - RdbmsOperation with SQL [UPDATE acl_permission SET mask = ? WHERE id = ?] compiled
14:47:22,550 INFO JdbcExtendedDaoImpl$AclPermissionUpdate:274 - RdbmsOperation with SQL [UPDATE acl_permission SET mask = ? WHERE id = ?] compiled
14:47:22,911 DEBUG BasicAclEntryVoter:216 - processDomainObjectClass=com.xxx.jaidwapfactory.po sition.concrete.PositionImpl
14:47:22,911 DEBUG BasicAclEntryVoter:216 - processDomainObjectClass=com.xxx.jaidwapfactory.po sition.concrete.PositionImpl
14:47:22,911 DEBUG BasicAclEntryVoter:216 - processDomainObjectClass=com.xxx.jaidwapfactory.po sition.concrete.PositionImpl
14:47:22,911 DEBUG BasicAclEntryVoter:216 - processDomainObjectClass=com.xxx.jaidwapfactory.po sition.concrete.PositionImpl
14:47:22,921 DEBUG BasicAclEntryVoter:216 - processDomainObjectClass=com.xxx.jaidwapfactory.po sition.concrete.PositionImpl
14:47:22,921 DEBUG BasicAclEntryVoter:216 - processDomainObjectClass=com.xxx.jaidwapfactory.po sition.concrete.PositionImpl
14:47:23,141 DEBUG MethodDefinitionMap:164 - Adding secure method [com.xxx.jaidwapfactory.security.SecurityPosit ionManager.removePosition] with attributes [[ACL_CONTACT_ADMIN]]
14:47:23,141 DEBUG MethodDefinitionMap:164 - Adding secure method [com.xxx.jaidwapfactory.security.SecurityPosit ionManager.removePosition] with attributes [[ACL_CONTACT_ADMIN]]
14:47:23,141 DEBUG MethodDefinitionMap:164 - Adding secure method [com.xxx.jaidwapfactory.security.SecurityPosit ionManager.removePosition] with attributes [[ACL_CONTACT_ADMIN]]
14:47:23,141 INFO MethodDefinitionMap:114 - Adding secure method [public abstract void com.xxx.jaidwapfactory.security.SecurityPositionMa nager.removePosition(com.xxx.jaidwapfactory.po sition.Position)] with attributes [[ACL_CONTACT_ADMIN]]
14:47:23,141 INFO MethodDefinitionMap:114 - Adding secure method [public abstract void com.xxx.jaidwapfactory.security.SecurityPositionMa nager.removePosition(com.xxx.jaidwapfactory.po sition.Position)] with attributes [[ACL_CONTACT_ADMIN]]
14:47:23,141 INFO MethodDefinitionMap:114 - Adding secure method [public abstract void com.xxx.jaidwapfactory.security.SecurityPositionMa nager.removePosition(com.xxx.jaidwapfactory.po sition.Position)] with attributes [[ACL_CONTACT_ADMIN]]
14:47:23,141 DEBUG MethodDefinitionMap:164 - Adding secure method [com.xxx.jaidwapfactory.security.SecurityPosit ionManager.getPositions] with attributes [[AFTER_ACL_COLLECTION_READ]]
14:47:23,141 DEBUG MethodDefinitionMap:164 - Adding secure method [com.xxx.jaidwapfactory.security.SecurityPosit ionManager.getPositions] with attributes [[AFTER_ACL_COLLECTION_READ]]
14:47:23,141 DEBUG MethodDefinitionMap:164 - Adding secure method [com.xxx.jaidwapfactory.security.SecurityPosit ionManager.getPositions] with attributes [[AFTER_ACL_COLLECTION_READ]]
14:47:23,151 INFO MethodDefinitionMap:114 - Adding secure method [public abstract java.util.ArrayList com.xxx.jaidwapfactory.security.SecurityPositionMa nager.getPositions()] with attributes [[AFTER_ACL_COLLECTION_READ]]
14:47:23,151 INFO MethodDefinitionMap:114 - Adding secure method [public abstract java.util.ArrayList com.xxx.jaidwapfactory.security.SecurityPositionMa nager.getPositions()] with attributes [[AFTER_ACL_COLLECTION_READ]]
14:47:23,151 INFO MethodDefinitionMap:114 - Adding secure method [public abstract java.util.ArrayList com.xxx.jaidwapfactory.security.SecurityPositionMa nager.getPositions()] with attributes [[AFTER_ACL_COLLECTION_READ]]
14:47:23,151 DEBUG MethodDefinitionMap:164 - Adding secure method [com.xxx.jaidwapfactory.security.SecurityPosit ionManager.getPosition] with attributes [[AFTER_ACL_READ]]
14:47:23,151 DEBUG MethodDefinitionMap:164 - Adding secure method [com.xxx.jaidwapfactory.security.SecurityPosit ionManager.getPosition] with attributes [[AFTER_ACL_READ]]
14:47:23,151 DEBUG MethodDefinitionMap:164 - Adding secure method [com.xxx.jaidwapfactory.security.SecurityPosit ionManager.getPosition] with attributes [[AFTER_ACL_READ]]
14:47:23,151 INFO MethodDefinitionMap:114 - Adding secure method [public abstract com.xxx.jaidwapfactory.position.Position com.xxx.jaidwapfactory.security.SecurityPositionMa nager.getPosition(java.lang.String)] with attributes [[AFTER_ACL_READ]]
14:47:23,151 INFO MethodDefinitionMap:114 - Adding secure method [public abstract com.xxx.jaidwapfactory.position.Position com.xxx.jaidwapfactory.security.SecurityPositionMa nager.getPosition(java.lang.String)] with attributes [[AFTER_ACL_READ]]
14:47:23,151 INFO MethodDefinitionMap:114 - Adding secure method [public abstract com.xxx.jaidwapfactory.position.Position com.xxx.jaidwapfactory.security.SecurityPositionMa nager.getPosition(java.lang.String)] with attributes [[AFTER_ACL_READ]]
14:47:23,151 DEBUG MethodDefinitionMap:164 - Adding secure method [com.xxx.jaidwapfactory.security.SecurityPosit ionManager.addPosition] with attributes [[ROLE_USER]]
14:47:23,151 DEBUG MethodDefinitionMap:164 - Adding secure method [com.xxx.jaidwapfactory.security.SecurityPosit ionManager.addPosition] with attributes [[ROLE_USER]]
14:47:23,151 DEBUG MethodDefinitionMap:164 - Adding secure method [com.xxx.jaidwapfactory.security.SecurityPosit ionManager.addPosition] with attributes [[ROLE_USER]]
14:47:23,161 INFO MethodDefinitionMap:114 - Adding secure method [public abstract void com.xxx.jaidwapfactory.security.SecurityPositionMa nager.addPosition(com.xxx.jaidwapfactory.posit ion.Position)] with attributes [[ROLE_USER]]
14:47:23,161 INFO MethodDefinitionMap:114 - Adding secure method [public abstract void com.xxx.jaidwapfactory.security.SecurityPositionMa nager.addPosition(com.xxx.jaidwapfactory.posit ion.Position)] with attributes [[ROLE_USER]]
14:47:23,161 INFO MethodDefinitionMap:114 - Adding secure method [public abstract void com.xxx.jaidwapfactory.security.SecurityPositionMa nager.addPosition(com.xxx.jaidwapfactory.posit ion.Position)] with attributes [[ROLE_USER]]
14:47:23,161 DEBUG AfterInvocationProviderManager:123 - Evaluating AFTER_ACL_COLLECTION_READ against net.sf.acegisecurity.afterinvocation.BasicAclEntry AfterInvocationProvider@3b4b1e
14:47:23,161 DEBUG AfterInvocationProviderManager:123 - Evaluating AFTER_ACL_COLLECTION_READ against net.sf.acegisecurity.afterinvocation.BasicAclEntry AfterInvocationProvider@3b4b1e
14:47:23,161 DEBUG AfterInvocationProviderManager:123 - Evaluating AFTER_ACL_COLLECTION_READ against net.sf.acegisecurity.afterinvocation.BasicAclEntry AfterInvocationCollectionFilteringProvider@c0a9f9
14:47:23,161 DEBUG AfterInvocationProviderManager:123 - Evaluating AFTER_ACL_COLLECTION_READ against net.sf.acegisecurity.afterinvocation.BasicAclEntry AfterInvocationCollectionFilteringProvider@c0a9f9
14:47:23,161 DEBUG AfterInvocationProviderManager:123 - Evaluating AFTER_ACL_READ against net.sf.acegisecurity.afterinvocation.BasicAclEntry AfterInvocationProvider@3b4b1e
14:47:23,161 DEBUG AfterInvocationProviderManager:123 - Evaluating AFTER_ACL_READ against net.sf.acegisecurity.afterinvocation.BasicAclEntry AfterInvocationProvider@3b4b1e
14:47:23,161 INFO AbstractSecurityInterceptor:275 - Validated configuration attributes
14:47:23,161 INFO AbstractSecurityInterceptor:275 - Validated configuration attributes
14:47:23,171 DEBUG BasicAclEntryVoter:239 - Voter for class=org.aopalliance.intercept.MethodInvocation
14:47:23,171 DEBUG BasicAclEntryVoter:239 - Voter for class=org.aopalliance.intercept.MethodInvocation
14:47:23,171 DEBUG BasicAclEntryVoter:239 - Voter for class=org.aopalliance.intercept.MethodInvocation
14:47:23,171 DEBUG BasicAclEntryVoter:239 - Voter for class=org.aopalliance.intercept.MethodInvocation
14:47:23,171 DEBUG BasicAclEntryVoter:239 - Voter for class=org.aopalliance.intercept.MethodInvocation
14:47:23,171 DEBUG BasicAclEntryVoter:239 - Voter for class=org.aopalliance.intercept.MethodInvocation
14:47:32,554 DEBUG AbstractIntegrationFilter:135 - extractFromContainer = null
14:47:32,554 DEBUG AbstractIntegrationFilter:135 - extractFromContainer = null
14:47:32,554 DEBUG AbstractIntegrationFilter:166 - Authentication not added to ContextHolder (could not extract an authentication object from the container which is an instance of Authentication)
14:47:32,554 DEBUG AbstractIntegrationFilter:166 - Authentication not added to ContextHolder (could not extract an authentication object from the container which is an instance of Authentication)
14:47:32,625 DEBUG RegExpBasedFilterInvocationDefinitionMap:132 - Converted URL to lowercase, from: 'org.apache.catalina.connector.RequestFacade@10980 e7'; to: '/index.jsp'
14:47:32,625 DEBUG RegExpBasedFilterInvocationDefinitionMap:132 - Converted URL to lowercase, from: 'org.apache.catalina.connector.RequestFacade@10980 e7'; to: '/index.jsp'
14:47:32,625 DEBUG RegExpBasedFilterInvocationDefinitionMap:144 - Candidate is: '/index.jsp'; pattern is \A/secure/super.*\Z; matched=false
14:47:32,625 DEBUG RegExpBasedFilterInvocationDefinitionMap:144 - Candidate is: '/index.jsp'; pattern is \A/secure/super.*\Z; matched=false
14:47:32,625 DEBUG RegExpBasedFilterInvocationDefinitionMap:144 - Candidate is: '/index.jsp'; pattern is \A/secure/.*\Z; matched=false
14:47:32,625 DEBUG RegExpBasedFilterInvocationDefinitionMap:144 - Candidate is: '/index.jsp'; pattern is \A/secure/.*\Z; matched=false
14:47:32,625 DEBUG AbstractSecurityInterceptor:476 - Public object - authentication not attempted
14:47:32,625 DEBUG AbstractSecurityInterceptor:476 - Public object - authentication not attempted
14:47:40,376 DEBUG SecurityEnforcementFilter:172 - Chain processed normally
14:47:40,376 DEBUG SecurityEnforcementFilter:172 - Chain processed normally
14:47:40,376 DEBUG AbstractIntegrationFilter:195 - ContextHolder does not contain any authentication information
14:47:40,376 DEBUG AbstractIntegrationFilter:195 - ContextHolder does not contain any authentication information
14:47:40,416 DEBUG AbstractIntegrationFilter:135 - extractFromContainer = null
14:47:40,416 DEBUG AbstractIntegrationFilter:135 - extractFromContainer = null
14:47:40,416 DEBUG AbstractIntegrationFilter:166 - Authentication not added to ContextHolder (could not extract an authentication object from the container which is an instance of Authentication)
14:47:40,416 DEBUG AbstractIntegrationFilter:166 - Authentication not added to ContextHolder (could not extract an authentication object from the container which is an instance of Authentication)
14:47:40,416 DEBUG RegExpBasedFilterInvocationDefinitionMap:132 - Converted URL to lowercase, from: 'org.apache.catalina.connector.RequestFacade@10980 e7'; to: '/hello.jsp'
14:47:40,416 DEBUG RegExpBasedFilterInvocationDefinitionMap:132 - Converted URL to lowercase, from: 'org.apache.catalina.connector.RequestFacade@10980 e7'; to: '/hello.jsp'
14:47:40,416 DEBUG RegExpBasedFilterInvocationDefinitionMap:144 - Candidate is: '/hello.jsp'; pattern is \A/secure/super.*\Z; matched=false
14:47:40,416 DEBUG RegExpBasedFilterInvocationDefinitionMap:144 - Candidate is: '/hello.jsp'; pattern is \A/secure/super.*\Z; matched=false
14:47:40,436 DEBUG RegExpBasedFilterInvocationDefinitionMap:144 - Candidate is: '/hello.jsp'; pattern is \A/secure/.*\Z; matched=false
14:47:40,436 DEBUG RegExpBasedFilterInvocationDefinitionMap:144 - Candidate is: '/hello.jsp'; pattern is \A/secure/.*\Z; matched=false
14:47:40,436 DEBUG AbstractSecurityInterceptor:476 - Public object - authentication not attempted
14:47:40,436 DEBUG AbstractSecurityInterceptor:476 - Public object - authentication not attempted
14:47:42,158 DEBUG SecurityEnforcementFilter:172 - Chain processed normally
14:47:42,158 DEBUG SecurityEnforcementFilter:172 - Chain processed normally
14:47:42,158 DEBUG AbstractIntegrationFilter:195 - ContextHolder does not contain any authentication information
14:47:42,158 DEBUG AbstractIntegrationFilter:195 - ContextHolder does not contain any authentication information
14:47:44,692 DEBUG AbstractIntegrationFilter:135 - extractFromContainer = null
14:47:44,692 DEBUG AbstractIntegrationFilter:135 - extractFromContainer = null
14:47:44,692 DEBUG AbstractIntegrationFilter:166 - Authentication not added to ContextHolder (could not extract an authentication object from the container which is an instance of Authentication)
14:47:44,692 DEBUG AbstractIntegrationFilter:166 - Authentication not added to ContextHolder (could not extract an authentication object from the container which is an instance of Authentication)
14:47:44,692 DEBUG RegExpBasedFilterInvocationDefinitionMap:132 - Converted URL to lowercase, from: 'org.apache.catalina.connector.RequestFacade@10980 e7'; to: '/secure/position_browse.jsp'
14:47:44,692 DEBUG RegExpBasedFilterInvocationDefinitionMap:132 - Converted URL to lowercase, from: 'org.apache.catalina.connector.RequestFacade@10980 e7'; to: '/secure/position_browse.jsp'
14:47:44,702 DEBUG RegExpBasedFilterInvocationDefinitionMap:144 - Candidate is: '/secure/position_browse.jsp'; pattern is \A/secure/super.*\Z; matched=false
14:47:44,702 DEBUG RegExpBasedFilterInvocationDefinitionMap:144 - Candidate is: '/secure/position_browse.jsp'; pattern is \A/secure/super.*\Z; matched=false
14:47:44,702 DEBUG RegExpBasedFilterInvocationDefinitionMap:144 - Candidate is: '/secure/position_browse.jsp'; pattern is \A/secure/.*\Z; matched=true
14:47:44,702 DEBUG RegExpBasedFilterInvocationDefinitionMap:144 - Candidate is: '/secure/position_browse.jsp'; pattern is \A/secure/.*\Z; matched=true
14:47:44,702 DEBUG AbstractSecurityInterceptor:381 - Secure object: FilterInvocation: URL: /secure/position_browse.jsp; ConfigAttributes: [ROLE_SUPERVISOR, ROLE_USER]
14:47:44,702 DEBUG AbstractSecurityInterceptor:381 - Secure object: FilterInvocation: URL: /secure/position_browse.jsp; ConfigAttributes: [ROLE_SUPERVISOR, ROLE_USER]
14:47:44,712 DEBUG SecurityEnforcementFilter:195 - Authentication failed - adding target URL to Session: http://localhost:8080/acegijaid/secure/position_browse.jsp
net.sf.acegisecurity.AuthenticationCredentialsNotF oundException: A valid SecureContext was not provided in the RequestContext
at net.sf.acegisecurity.intercept.AbstractSecurityInt erceptor.credentialsNotFound(AbstractSecurityI nterceptor.java:520)
at net.sf.acegisecurity.intercept.AbstractSecurityInt erceptor.beforeInvocation(AbstractSecurityInte rceptor.java:388)
at net.sf.acegisecurity.intercept.web.FilterSecurityI nterceptor.invoke(FilterSecurityInterceptor.ja va:67)
at net.sf.acegisecurity.intercept.web.SecurityEnforce mentFilter.doFilter(SecurityEnforcementFilter. java:169)
at net.sf.acegisecurity.util.FilterToBeanProxy.doFilt er(FilterToBeanProxy.java:105)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java: ;186)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:157) ;
at net.sf.acegisecurity.ui.AbstractIntegrationFilter. doFilter(AbstractIntegrationFilter.java:17 2)
at net.sf.acegisecurity.util.FilterToBeanProxy.doFilt er(FilterToBeanProxy.java:105)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java: ;186)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:157) ;
at net.sf.acegisecurity.ui.AbstractProcessingFilter.d oFilter(AbstractProcessingFilter.java:391& #41;
at net.sf.acegisecurity.util.FilterToBeanProxy.doFilt er(FilterToBeanProxy.java:105)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java: ;186)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:157) ;
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke& #40;StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process&# 40;Http11Processor.java:825)
at org.apache.coyote.http11.Http11Protocol$Http11Conn ectionHandler.processConnection(Http11Protocol .java:731)
at org.apache.tomcat.util.net.PoolTcpEndpoint.process Socket(PoolTcpEndpoint.java:526)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThr ead.runIt(LeaderFollowerWorkerThread.java: 80)
at org.apache.tomcat.util.threads.ThreadPool$ControlR unnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
14:47:44,712 DEBUG SecurityEnforcementFilter:195 - Authentication failed - adding target URL to Session: http://localhost:8080/acegijaid/secure/position_browse.jsp
net.sf.acegisecurity.AuthenticationCredentialsNotF oundException: A valid SecureContext was not provided in the RequestContext
at net.sf.acegisecurity.intercept.AbstractSecurityInt erceptor.credentialsNotFound(AbstractSecurityI nterceptor.java:520)
at net.sf.acegisecurity.intercept.AbstractSecurityInt erceptor.beforeInvocation(AbstractSecurityInte rceptor.java:388)
at net.sf.acegisecurity.intercept.web.FilterSecurityI nterceptor.invoke(FilterSecurityInterceptor.ja va:67)
at net.sf.acegisecurity.intercept.web.SecurityEnforce mentFilter.doFilter(SecurityEnforcementFilter. java:169)
at net.sf.acegisecurity.util.FilterToBeanProxy.doFilt er(FilterToBeanProxy.java:105)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java: ;186)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:157) ;
at net.sf.acegisecurity.ui.AbstractIntegrationFilter. doFilter(AbstractIntegrationFilter.java:17 2)
at net.sf.acegisecurity.util.FilterToBeanProxy.doFilt er(FilterToBeanProxy.java:105)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java: ;186)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:157) ;
at net.sf.acegisecurity.ui.AbstractProcessingFilter.d oFilter(AbstractProcessingFilter.java:391& #41;
at net.sf.acegisecurity.util.FilterToBeanProxy.doFilt er(FilterToBeanProxy.java:105)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java: ;186)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:157) ;
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke& #40;StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process&# 40;Http11Processor.java:825)
at org.apache.coyote.http11.Http11Protocol$Http11Conn ectionHandler.processConnection(Http11Protocol .java:731)
at org.apache.tomcat.util.net.PoolTcpEndpoint.process Socket(PoolTcpEndpoint.java:526)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThr ead.runIt(LeaderFollowerWorkerThread.java: 80)
at org.apache.tomcat.util.threads.ThreadPool$ControlR unnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
14:47:44,732 DEBUG AuthenticationProcessingFilterEntryPoint:176 - Redirecting to: http://localhost:8080/acegijaid/acegilogin.jsp
14:47:44,732 DEBUG AuthenticationProcessingFilterEntryPoint:176 - Redirecting to: http://localhost:8080/acegijaid/acegilogin.jsp
14:47:44,732 DEBUG AuthenticationProcessingFilterEntryPoint:176 - Redirecting to: http://localhost:8080/acegijaid/acegilogin.jsp
14:47:44,732 DEBUG AbstractIntegrationFilter:195 - ContextHolder does not contain any authentication information
14:47:44,732 DEBUG AbstractIntegrationFilter:195 - ContextHolder does not contain any authentication information
14:47:44,742 DEBUG AbstractIntegrationFilter:135 - extractFromContainer = null
14:47:44,742 DEBUG AbstractIntegrationFilter:135 - extractFromContainer = null
14:47:44,742 DEBUG AbstractIntegrationFilter:166 - Authentication not added to ContextHolder (could not extract an authentication object from the container which is an instance of Authentication)
14:47:44,742 DEBUG AbstractIntegrationFilter:166 - Authentication not added to ContextHolder (could not extract an authentication object from the container which is an instance of Authentication)
14:47:44,742 DEBUG RegExpBasedFilterInvocationDefinitionMap:132 - Converted URL to lowercase, from: 'org.apache.catalina.connector.RequestFacade@10980 e7'; to: '/acegilogin.jsp'
14:47:44,742 DEBUG RegExpBasedFilterInvocationDefinitionMap:132 - Converted URL to lowercase, from: 'org.apache.catalina.connector.RequestFacade@10980 e7'; to: '/acegilogin.jsp'
14:47:44,742 DEBUG RegExpBasedFilterInvocationDefinitionMap:144 - Candidate is: '/acegilogin.jsp'; pattern is \A/secure/super.*\Z; matched=false
14:47:44,742 DEBUG RegExpBasedFilterInvocationDefinitionMap:144 - Candidate is: '/acegilogin.jsp'; pattern is \A/secure/super.*\Z; matched=false
14:47:44,752 DEBUG RegExpBasedFilterInvocationDefinitionMap:144 - Candidate is: '/acegilogin.jsp'; pattern is \A/secure/.*\Z; matched=false
14:47:44,752 DEBUG RegExpBasedFilterInvocationDefinitionMap:144 - Candidate is: '/acegilogin.jsp'; pattern is \A/secure/.*\Z; matched=false
14:47:44,752 DEBUG AbstractSecurityIntercep