Update to use contextConfigLocation.
This commit is contained in:
parent
6c26e79a0f
commit
7eefbd3bb2
|
@ -76,7 +76,7 @@ import javax.servlet.http.HttpServletResponse;
|
|||
* WebApplicationContextUtils#getWebApplicationContext(ServletContext sc)}
|
||||
* method to obtain an ApplicationContext instance, inside which must be a
|
||||
* configured AuthenticationManager instance. In the case where it is
|
||||
* desireable for this filter to instantiate its own ApplicationContext
|
||||
* desirable for this filter to instantiate its own ApplicationContext
|
||||
* instance from which to obtain the AuthenticationManager, the location of
|
||||
* the config for this context may be specified with the optional
|
||||
* <code>appContextLocation</code> init param.
|
||||
|
@ -105,7 +105,7 @@ import javax.servlet.http.HttpServletResponse;
|
|||
* <code>/j_acegi_security_check</code>.
|
||||
* </li>
|
||||
* <li>
|
||||
* <code>appContextLocation</code> (optional, normally not used), indicates the
|
||||
* <code>contextConfigLocation</code> (optional, normally not used), indicates the
|
||||
* path to an application context that contains an {@link
|
||||
* AuthenticationManager} which should be used to process each authentication
|
||||
* request. If not specified, {@link
|
||||
|
@ -116,7 +116,7 @@ import javax.servlet.http.HttpServletResponse;
|
|||
*
|
||||
*
|
||||
* @author Ben Alex
|
||||
* @author colin sampaleanu
|
||||
* @author Colin Sampaleanu
|
||||
* @version $Id$
|
||||
*/
|
||||
public class AuthenticationProcessingFilter implements Filter {
|
||||
|
@ -126,7 +126,7 @@ public class AuthenticationProcessingFilter implements Filter {
|
|||
* Name of (optional) servlet filter parameter that can specify the config
|
||||
* location for a new ApplicationContext used to config this filter.
|
||||
*/
|
||||
public static final String CONFIG_LOCATION_PARAM = "appContextLocation";
|
||||
public static final String CONFIG_LOCATION_PARAM = "contextConfigLocation";
|
||||
public static final String ACEGI_SECURITY_TARGET_URL_KEY = "ACEGI_SECURITY_TARGET_URL";
|
||||
public static final String ACEGI_SECURITY_FORM_USERNAME_KEY = "j_username";
|
||||
public static final String ACEGI_SECURITY_FORM_PASSWORD_KEY = "j_password";
|
||||
|
|
|
@ -132,11 +132,11 @@ public class SecurityEnforcementFilterTests extends TestCase {
|
|||
request.getSession().getAttribute(AuthenticationProcessingFilter.ACEGI_SECURITY_TARGET_URL_KEY));
|
||||
}
|
||||
|
||||
public void testStartupDetectsInvalidAppContextLocation()
|
||||
public void testStartupDetectsInvalidcontextConfigLocation()
|
||||
throws Exception {
|
||||
MockFilterConfig config = new MockFilterConfig();
|
||||
config.setInitParmeter("loginFormUrl", "/login.jsp");
|
||||
config.setInitParmeter("appContextLocation",
|
||||
config.setInitParmeter("contextConfigLocation",
|
||||
"net/sf/acegisecurity/intercept/web/securityfiltertest-invalid.xml");
|
||||
|
||||
SecurityEnforcementFilter filter = new SecurityEnforcementFilter();
|
||||
|
@ -163,7 +163,7 @@ public class SecurityEnforcementFilterTests extends TestCase {
|
|||
assertTrue(expected.getMessage().startsWith("Error obtaining/creating ApplicationContext for config."));
|
||||
}
|
||||
|
||||
config.setInitParmeter("appContextLocation", "");
|
||||
config.setInitParmeter("contextConfigLocation", "");
|
||||
|
||||
try {
|
||||
filter.init(config);
|
||||
|
@ -173,11 +173,11 @@ public class SecurityEnforcementFilterTests extends TestCase {
|
|||
}
|
||||
}
|
||||
|
||||
public void testStartupDetectsMissingInvalidAppContextLocation()
|
||||
public void testStartupDetectsMissingInvalidcontextConfigLocation()
|
||||
throws Exception {
|
||||
MockFilterConfig config = new MockFilterConfig();
|
||||
config.setInitParmeter("loginFormUrl", "/login.jsp");
|
||||
config.setInitParmeter("appContextLocation", "DOES_NOT_EXIST");
|
||||
config.setInitParmeter("contextConfigLocation", "DOES_NOT_EXIST");
|
||||
|
||||
SecurityEnforcementFilter filter = new SecurityEnforcementFilter();
|
||||
|
||||
|
@ -192,7 +192,7 @@ public class SecurityEnforcementFilterTests extends TestCase {
|
|||
public void testStartupDetectsMissingLoginFormUrl()
|
||||
throws Exception {
|
||||
MockFilterConfig config = new MockFilterConfig();
|
||||
config.setInitParmeter("appContextLocation",
|
||||
config.setInitParmeter("contextConfigLocation",
|
||||
"net/sf/acegisecurity/intercept/web/securityfiltertest-valid.xml");
|
||||
|
||||
SecurityEnforcementFilter filter = new SecurityEnforcementFilter();
|
||||
|
@ -237,7 +237,7 @@ public class SecurityEnforcementFilterTests extends TestCase {
|
|||
public void testSuccessfulStartupAndShutdownDown()
|
||||
throws Exception {
|
||||
MockFilterConfig config = new MockFilterConfig();
|
||||
config.setInitParmeter("appContextLocation",
|
||||
config.setInitParmeter("contextConfigLocation",
|
||||
"net/sf/acegisecurity/intercept/web/securityfiltertest-valid.xml");
|
||||
config.setInitParmeter("loginFormUrl", "/login.jsp");
|
||||
|
||||
|
|
|
@ -102,7 +102,7 @@ public class AuthenticationProcessingFilterTests extends TestCase {
|
|||
|
||||
// Setup our filter configuration
|
||||
MockFilterConfig config = new MockFilterConfig();
|
||||
config.setInitParmeter("appContextLocation",
|
||||
config.setInitParmeter("contextConfigLocation",
|
||||
"net/sf/acegisecurity/ui/webapp/filtertest-valid.xml");
|
||||
config.setInitParmeter("defaultTargetUrl", "/");
|
||||
config.setInitParmeter("authenticationFailureUrl", "/failed.jsp");
|
||||
|
@ -133,7 +133,7 @@ public class AuthenticationProcessingFilterTests extends TestCase {
|
|||
|
||||
// Setup our filter configuration
|
||||
MockFilterConfig config = new MockFilterConfig();
|
||||
config.setInitParmeter("appContextLocation",
|
||||
config.setInitParmeter("contextConfigLocation",
|
||||
"net/sf/acegisecurity/ui/webapp/filtertest-valid.xml");
|
||||
config.setInitParmeter("defaultTargetUrl", "/");
|
||||
config.setInitParmeter("authenticationFailureUrl", "/failed.jsp");
|
||||
|
@ -163,7 +163,7 @@ public class AuthenticationProcessingFilterTests extends TestCase {
|
|||
|
||||
// Setup our filter configuration
|
||||
MockFilterConfig config = new MockFilterConfig();
|
||||
config.setInitParmeter("appContextLocation",
|
||||
config.setInitParmeter("contextConfigLocation",
|
||||
"net/sf/acegisecurity/ui/webapp/filtertest-valid.xml");
|
||||
config.setInitParmeter("defaultTargetUrl", "/");
|
||||
config.setInitParmeter("authenticationFailureUrl", "/failed.jsp");
|
||||
|
@ -190,7 +190,7 @@ public class AuthenticationProcessingFilterTests extends TestCase {
|
|||
|
||||
// Setup our filter configuration
|
||||
MockFilterConfig config = new MockFilterConfig();
|
||||
config.setInitParmeter("appContextLocation",
|
||||
config.setInitParmeter("contextConfigLocation",
|
||||
"net/sf/acegisecurity/ui/webapp/filtertest-valid.xml");
|
||||
config.setInitParmeter("defaultTargetUrl", "/");
|
||||
config.setInitParmeter("authenticationFailureUrl", "/failed.jsp");
|
||||
|
@ -222,7 +222,7 @@ public class AuthenticationProcessingFilterTests extends TestCase {
|
|||
|
||||
// Setup our filter configuration
|
||||
MockFilterConfig config = new MockFilterConfig();
|
||||
config.setInitParmeter("appContextLocation",
|
||||
config.setInitParmeter("contextConfigLocation",
|
||||
"net/sf/acegisecurity/ui/webapp/filtertest-valid.xml");
|
||||
config.setInitParmeter("defaultTargetUrl", "/");
|
||||
config.setInitParmeter("authenticationFailureUrl", "/failed.jsp");
|
||||
|
@ -251,7 +251,7 @@ public class AuthenticationProcessingFilterTests extends TestCase {
|
|||
|
||||
// Setup our filter configuration
|
||||
MockFilterConfig config = new MockFilterConfig();
|
||||
config.setInitParmeter("appContextLocation",
|
||||
config.setInitParmeter("contextConfigLocation",
|
||||
"net/sf/acegisecurity/ui/webapp/filtertest-valid.xml");
|
||||
config.setInitParmeter("defaultTargetUrl", "/");
|
||||
config.setInitParmeter("authenticationFailureUrl", "/failed.jsp");
|
||||
|
@ -268,12 +268,12 @@ public class AuthenticationProcessingFilterTests extends TestCase {
|
|||
assertTrue(request.getSession().getAttribute(HttpSessionIntegrationFilter.ACEGI_SECURITY_AUTHENTICATION_KEY) == null);
|
||||
}
|
||||
|
||||
public void testStartupDetectsInvalidAppContextLocation()
|
||||
public void testStartupDetectsInvalidcontextConfigLocation()
|
||||
throws Exception {
|
||||
MockFilterConfig config = new MockFilterConfig();
|
||||
config.setInitParmeter("defaultTargetUrl", "/");
|
||||
config.setInitParmeter("authenticationFailureUrl", "/failed.jsp");
|
||||
config.setInitParmeter("appContextLocation",
|
||||
config.setInitParmeter("contextConfigLocation",
|
||||
"net/sf/acegisecurity/ui/webapp/filtertest-invalid.xml");
|
||||
|
||||
AuthenticationProcessingFilter filter = new AuthenticationProcessingFilter();
|
||||
|
@ -301,7 +301,7 @@ public class AuthenticationProcessingFilterTests extends TestCase {
|
|||
assertTrue(expected.getMessage().startsWith("Error obtaining/creating ApplicationContext for config."));
|
||||
}
|
||||
|
||||
config.setInitParmeter("appContextLocation", "");
|
||||
config.setInitParmeter("contextConfigLocation", "");
|
||||
|
||||
try {
|
||||
filter.init(config);
|
||||
|
@ -314,7 +314,7 @@ public class AuthenticationProcessingFilterTests extends TestCase {
|
|||
public void testStartupDetectsMissingAuthenticationFailureUrl()
|
||||
throws Exception {
|
||||
MockFilterConfig config = new MockFilterConfig();
|
||||
config.setInitParmeter("appContextLocation",
|
||||
config.setInitParmeter("contextConfigLocation",
|
||||
"net/sf/acegisecurity/ui/webapp/filtertest-valid.xml");
|
||||
config.setInitParmeter("defaultTargetUrl", "/");
|
||||
|
||||
|
@ -343,7 +343,7 @@ public class AuthenticationProcessingFilterTests extends TestCase {
|
|||
throws Exception {
|
||||
MockFilterConfig config = new MockFilterConfig();
|
||||
config.setInitParmeter("authenticationFailureUrl", "/failed.jsp");
|
||||
config.setInitParmeter("appContextLocation",
|
||||
config.setInitParmeter("contextConfigLocation",
|
||||
"net/sf/acegisecurity/ui/webapp/filtertest-valid.xml");
|
||||
|
||||
AuthenticationProcessingFilter filter = new AuthenticationProcessingFilter();
|
||||
|
@ -367,12 +367,12 @@ public class AuthenticationProcessingFilterTests extends TestCase {
|
|||
}
|
||||
}
|
||||
|
||||
public void testStartupDetectsMissingInvalidAppContextLocation()
|
||||
public void testStartupDetectsMissingInvalidcontextConfigLocation()
|
||||
throws Exception {
|
||||
MockFilterConfig config = new MockFilterConfig();
|
||||
config.setInitParmeter("defaultTargetUrl", "/");
|
||||
config.setInitParmeter("authenticationFailureUrl", "/failed.jsp");
|
||||
config.setInitParmeter("appContextLocation", "DOES_NOT_EXIST");
|
||||
config.setInitParmeter("contextConfigLocation", "DOES_NOT_EXIST");
|
||||
|
||||
AuthenticationProcessingFilter filter = new AuthenticationProcessingFilter();
|
||||
|
||||
|
@ -397,7 +397,7 @@ public class AuthenticationProcessingFilterTests extends TestCase {
|
|||
|
||||
// Setup our filter configuration
|
||||
MockFilterConfig config = new MockFilterConfig();
|
||||
config.setInitParmeter("appContextLocation",
|
||||
config.setInitParmeter("contextConfigLocation",
|
||||
"net/sf/acegisecurity/ui/webapp/filtertest-valid.xml");
|
||||
config.setInitParmeter("defaultTargetUrl", "/");
|
||||
config.setInitParmeter("authenticationFailureUrl", "/failed.jsp");
|
||||
|
@ -442,7 +442,7 @@ public class AuthenticationProcessingFilterTests extends TestCase {
|
|||
|
||||
// Setup our filter configuration
|
||||
MockFilterConfig config = new MockFilterConfig();
|
||||
config.setInitParmeter("appContextLocation",
|
||||
config.setInitParmeter("contextConfigLocation",
|
||||
"net/sf/acegisecurity/ui/webapp/filtertest-valid.xml");
|
||||
config.setInitParmeter("defaultTargetUrl", "/");
|
||||
config.setInitParmeter("authenticationFailureUrl", "/failed.jsp");
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
<subtitle>Reference Documentation</subtitle>
|
||||
|
||||
<releaseinfo>0.4</releaseinfo>
|
||||
<releaseinfo>0.5</releaseinfo>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
|
@ -517,10 +517,6 @@
|
|||
provided below: <programlisting><filter>
|
||||
<filter-name>Acegi HTTP Request Security Filter</filter-name>
|
||||
<filter-class>net.sf.acegisecurity.intercept.web.SecurityEnforcementFilter</filter-class>
|
||||
<init-param>
|
||||
<param-name>appContextLocation</param-name>
|
||||
<param-value>web-filters-acegisecurity.xml</param-value>
|
||||
</init-param>
|
||||
<init-param>
|
||||
<param-name>loginFormUrl</param-name>
|
||||
<param-value>/acegilogin.jsp</param-value>
|
||||
|
@ -532,22 +528,31 @@
|
|||
<url-pattern>/*</url-pattern>
|
||||
</filter-mapping></programlisting></para>
|
||||
|
||||
<para>As shown above, an <literal>appContextLocation</literal>
|
||||
indicates the location of a Spring XML application context. In the
|
||||
example above, this file should be placed at the root of the web
|
||||
application's classpath (in the <literal>WEB-INF/classes</literal>
|
||||
directory). The <literal>loginFormUrl</literal> is where the filter
|
||||
will redirect the user's browser if they request a secure HTTP
|
||||
resource but they are not authenticated. If the user is authenticated,
|
||||
a "403 Forbidden" response will be returned to the browser. All paths
|
||||
are relative to the web application root.</para>
|
||||
<para>The <literal>loginFormUrl</literal> is where the filter will
|
||||
redirect the user's browser if they request a secure HTTP resource but
|
||||
they are not authenticated. If the user is authenticated, a "403
|
||||
Forbidden" response will be returned to the browser. All paths are
|
||||
relative to the web application root.</para>
|
||||
|
||||
<para>The <literal>SecurityEnforcementFilter</literal> will load the
|
||||
Spring XML application context expressed in the
|
||||
<literal>appContextLocation</literal>. It will expect to find in this
|
||||
application context a properly configured
|
||||
<literal>FilterSecurityInterceptor</literal>. The configuration of the
|
||||
<literal>FilterSecurityInterceptor</literal> is very similar to the
|
||||
<para>To perform its function, the
|
||||
<literal>SecurityEnforcementFilter</literal> will need to delegate to
|
||||
a properly configured <literal>FilterSecurityInterceptor</literal>. To
|
||||
do this it requires access to a Spring application context, which is
|
||||
usually obtained from
|
||||
<literal>WebApplicationContextUtils.getWebApplicationContext(ServletContext)</literal>.
|
||||
This is usually made available by using Spring's
|
||||
<literal>ContextLoaderListener</literal> in
|
||||
<literal>web.xml</literal>. Alternatively, the
|
||||
<literal>web.xml</literal> can be used to define a filter
|
||||
<literal><init-param></literal> named
|
||||
<literal>contextConfigLocation</literal>. This initialization
|
||||
parameter will represent a path to a Spring XML application context
|
||||
that the <literal>SecurityEnforcementFilter</literal> will load during
|
||||
startup.</para>
|
||||
|
||||
<para>The configuration of the
|
||||
<literal>FilterSecurityInterceptor</literal> in the Spring application
|
||||
context is very similar to the
|
||||
<literal>MethodSecurityInterceptor</literal>:</para>
|
||||
|
||||
<para><programlisting><bean id="filterInvocationInterceptor" class="net.sf.acegisecurity.intercept.web.FilterSecurityInterceptor">
|
||||
|
@ -1470,10 +1475,6 @@ public boolean supports(Class clazz);</programlisting></para>
|
|||
<para><programlisting><filter>
|
||||
<filter-name>Acegi Authentication Processing Filter</filter-name>
|
||||
<filter-class>net.sf.acegisecurity.ui.webapp.AuthenticationProcessingFilter</filter-class>
|
||||
<init-param>
|
||||
<param-name>appContextLocation</param-name>
|
||||
<param-value>web-filters-acegisecurity.xml</param-value>
|
||||
</init-param>
|
||||
<init-param>
|
||||
<param-name>authenticationFailureUrl</param-name>
|
||||
<param-value>/acegilogin.jsp?login_error=1</param-value>
|
||||
|
@ -1493,14 +1494,23 @@ public boolean supports(Class clazz);</programlisting></para>
|
|||
<url-pattern>/*</url-pattern>
|
||||
</filter-mapping></programlisting></para>
|
||||
|
||||
<para>The <literal>appContextLocation</literal> specifies the location
|
||||
of a Spring XML application context. In the example above the root of
|
||||
the classpath is used, so the XML file should be placed in
|
||||
<literal>WEB-INF/classes</literal>. The
|
||||
<literal>AuthenticationProcessingFilter</literal> will load this
|
||||
application context, expecting to find a properly configured
|
||||
<literal>AuthenticationManager</literal>. It will use this
|
||||
<literal>AuthenticationManager</literal> to process each
|
||||
<para>To perform its function, the
|
||||
<literal>AuthenticationProcessingFilter</literal> will need to
|
||||
delegate to a properly configured
|
||||
<literal>AuthenticationManager</literal>. To do this it requires
|
||||
access to a Spring application context, which is usually obtained from
|
||||
<literal>WebApplicationContextUtils.getWebApplicationContext(ServletContext)</literal>.
|
||||
This is usually made available by using Spring's
|
||||
<literal>ContextLoaderListener</literal> in
|
||||
<literal>web.xml</literal>. Alternatively, the
|
||||
<literal>web.xml</literal> can be used to define a filter
|
||||
<literal><init-param></literal> named
|
||||
<literal>contextConfigLocation</literal>. This initialization
|
||||
parameter will represent a path to a Spring XML application context
|
||||
that the <literal>AuthenticationProcessingFilter</literal> will load
|
||||
during startup.</para>
|
||||
|
||||
<para>The <literal>AuthenticationManager</literal> processes each
|
||||
authentication request. If authentication fails, the browser will be
|
||||
redirected to the <literal>authenticationFailureUrl</literal>. The
|
||||
<literal>AuthenticationException</literal> will be placed into the
|
||||
|
@ -1515,9 +1525,10 @@ public boolean supports(Class clazz);</programlisting></para>
|
|||
This becomes the "well-known location" from which the
|
||||
<literal>Authentication</literal> object is later extracted.</para>
|
||||
|
||||
<para>Once the HttpSession has been updated, the browser will need to
|
||||
be redirected to the target URL. The target URL is usually indicated
|
||||
by the <literal>HttpSession</literal> attribute specified by
|
||||
<para>Once the <literal>HttpSession</literal> has been updated, the
|
||||
browser will need to be redirected to the target URL. The target URL
|
||||
is usually indicated by the <literal>HttpSession</literal> attribute
|
||||
specified by
|
||||
<literal>AuthenticationProcessingFilter.ACEGI_SECURITY_TARGET_URL_KEY</literal>.
|
||||
This attribute is automatically set by the
|
||||
<literal>SecurityEnforcementFilter</literal> when an
|
||||
|
|
Loading…
Reference in New Issue