From 3f43a04972a1d6ff4168c652138ad69efdc377e4 Mon Sep 17 00:00:00 2001 From: Scott McCrory Date: Thu, 27 Oct 2005 22:04:04 +0000 Subject: [PATCH] Added Siteminder authentication section. --- doc/docbook/acegi.xml | 92 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) 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