diff --git a/doc/docbook/acegi.xml b/doc/docbook/acegi.xml
index e53b18b2a9..48914fe12e 100644
--- a/doc/docbook/acegi.xml
+++ b/doc/docbook/acegi.xml
@@ -1670,6 +1670,98 @@ public aspect DomainObjectInstanceSecurityAspect implements InitializingBean {
+
+ Siteminder Authentication
+
+ Acegi Security provides a web filter that can be used to process
+ requests that have been pre-authenticated using Computer
+ Associates'/Netegrity's Siteminder product. Acegi's support assumes
+ that you're using Siteminder for authentication,
+ and your application (or backing datasource) is used for
+ authorization. The use of Siteminder for
+ authorization is not yet directly
+ supported.
+
+ A Siteminder agent is typically set up on your web server to
+ intercept a user's first call to your application. This agent
+ redirects the user's initial request to a login page, and only after
+ successful authentication does your application receive the request.
+ Authenticated requests contain one or more HTTP headers populated by
+ the Siteminder agent. Below we'll assume that the primary request
+ header key is "SM_USER", but keep in mind that your organization's
+ header values may be different. Refer to your company's "single
+ sign-on" group for details.
+
+
+ SiteminderAuthenticationProcessingFilter
+
+ As mentioned above the
+ net.sf.acegisecurity.ui.webapp.SiteminderAuthenticationProcessingFilter
+ attempts to identify a user based on specified HTTP headers.
+
+ The first step is to define our
+ authenticationProcessingFilter bean and tell it
+ what authenticationManager to use, where to send
+ users upon success and failure and where to find the Siteminder
+ username and password values. Most people won't need the password
+ value since Siteminder has already authenticated the user, so it's
+ OK to use the same username header.
+
+ <bean id="authenticationProcessingFilter" class="net.sf.acegisecurity.ui.webapp.SiteminderAuthenticationProcessingFilter">
+ <property name="authenticationManager"><ref bean="authenticationManager"/></property>
+ <property name="authenticationFailureUrl"><value>/login.jsp?login_error=1</value></property>
+ <property name="defaultTargetUrl"><value>/security.do?method=getMainMenu</value></property>
+ <property name="filterProcessesUrl"><value>/j_acegi_security_check</value></property>
+ <property name="siteminderUsernameHeaderKey"><value>SM_USER</value></property>
+ <property name="siteminderPasswordHeaderKey"><value>SM_USER</value></property>
+ </bean>
+
+ Since this authenticationProcessingFilter
+ depends on an authenticationManager, we'll need
+ to define one:
+
+ <!-- ======================== AUTHENTICATION ======================= -->
+ <!--
+ - The top-level Authentication Manager is responsible for all application AUTHENTICATION
+ - operations. Note that it must reference one or more provider(s) defined below.
+ -->
+ <bean id="authenticationManager" class="net.sf.acegisecurity.providers.ProviderManager">
+ <property name="providers">
+ <list>
+ <ref local="daoAuthenticationProvider"/>
+ </list>
+ </property>
+ </bean>
+
+ Note that your daoAuthenticationProvider
+ above will expect the password property to match what it expects.
+ Since authentication has already been handled by Siteminder and
+ you've specified the same HTTP header for both username and
+ password, daoAuthenticationProvider can simply
+ make sure the username and password values match.
+
+ Finally we need to tell the
+ filterChainProxy to include
+ authenticationProcessingFilter in its
+ operations.
+
+ <!-- ======================== FILTER CHAIN ======================= -->
+ <!--
+ - The web.xml file has a single filter reference to this top-level bean, which
+ - invokes the chain of sub-filters specified below.
+ -->
+ <bean id="filterChainProxy" class="net.sf.acegisecurity.util.FilterChainProxy">
+ <property name="filterInvocationDefinitionSource">
+ <value>
+ CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
+ PATTERN_TYPE_APACHE_ANT
+ /**=httpSessionContextIntegrationFilter,authenticationProcessingFilter,securityEnforcementFilter
+ </value>
+ </property>
+ </bean>
+
+
+
Authentication Recommendations