| 
					
				 | 
			
			
				@@ -73,7 +73,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         authentication provider to read the authorities which were externally allocated to the user. We'll look at a concrete 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         example next. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </para> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <section> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <section xml:id="j2ee-preauth-details"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <title>J2eeBasedPreAuthenticatedWebAuthenticationDetailsSource</title> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <para> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           If the filter is configured with an <literal>authenticationDetailsSource</literal> which is an instance of this 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -126,10 +126,37 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   <section> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     <title>Concrete Implementations</title> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     <para> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      TODO. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      X.509 authentication is covered in its <link xlink:href="#x509">own chapter</link>. Here we'll look at some classes 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      which provide support for other pre-authenticated scenarios.  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     </para> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <section> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <title>Request-Header Authentication (Siteminder)</title> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <para> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        An external authentication system may supply information to the application by setting specific headers on the HTTP request. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        A well known example of this is is Siteminder, which passes the username in a header called <literal>SM_USER</literal>. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        This mechanism is supported by the class <classname>RequestHeaderPreAuthenticatedProcessingFilter</classname> which 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        simply extracts the username from the header. It defaults to using the name <literal>SM_USER</literal> as the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        header name. See the Javadoc for more details.  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </para> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <tip> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <para>Note that when using a system like this, the framework performs no authentication checks at all and  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          it is <emphasis>extremely</emphasis> important that the external system is configured properly and protects all 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          access to the application. If an attacker is able to forge the headers in their original request without this being 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          detected then they could potentially choose any userame they wished. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </para>  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </tip> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </section> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <section> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <title>J2EE Container Authentication</title> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <para> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        The class <classname>J2eePreAuthenticatedProcessingFilter</classname> will extract the username from the  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <literal>userPrincipal</literal> property of the <interfacename>HttpServletRequest</interfacename>. use of this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        filter would usually be combined with the use of J2EE roles as described above in <xref linkend="j2ee-preauth-details"/>.  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </para> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </section> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   </section> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </chapter> 
			 |