|  | @@ -27,6 +27,8 @@ import org.springframework.security.providers.anonymous.AnonymousAuthenticationT
 | 
	
		
			
				|  |  |  import org.springframework.security.ui.SpringSecurityFilter;
 | 
	
		
			
				|  |  |  import org.springframework.security.ui.WebAuthenticationDetails;
 | 
	
		
			
				|  |  |  import org.springframework.security.ui.FilterChainOrder;
 | 
	
		
			
				|  |  | +import org.springframework.security.ui.AuthenticationDetailsSource;
 | 
	
		
			
				|  |  | +import org.springframework.security.ui.AuthenticationDetailsSourceImpl;
 | 
	
		
			
				|  |  |  import org.springframework.security.ui.webapp.AuthenticationProcessingFilter;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.InitializingBean;
 | 
	
		
			
				|  |  |  import org.springframework.util.Assert;
 | 
	
	
		
			
				|  | @@ -46,6 +48,7 @@ import org.apache.commons.logging.Log;
 | 
	
		
			
				|  |  |  import org.apache.commons.logging.LogFactory;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import javax.servlet.FilterChain;
 | 
	
		
			
				|  |  | +import javax.servlet.ServletException;
 | 
	
		
			
				|  |  |  import javax.servlet.http.HttpServletRequest;
 | 
	
		
			
				|  |  |  import javax.servlet.http.HttpServletResponse;
 | 
	
		
			
				|  |  |  import javax.servlet.http.HttpSession;
 | 
	
	
		
			
				|  | @@ -110,8 +113,9 @@ public class NtlmProcessingFilter extends SpringSecurityFilter implements Initia
 | 
	
		
			
				|  |  |  	private String	defaultDomain;
 | 
	
		
			
				|  |  |  	private String	domainController;
 | 
	
		
			
				|  |  |  	private AuthenticationManager authenticationManager;
 | 
	
		
			
				|  |  | +    private AuthenticationDetailsSource authenticationDetailsSource = new AuthenticationDetailsSourceImpl();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	//~ Methods ========================================================================================================
 | 
	
		
			
				|  |  | +    //~ Methods ========================================================================================================
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	/**
 | 
	
		
			
				|  |  |  	 * Ensures an <code>AuthenticationManager</code> and authentication failure
 | 
	
	
		
			
				|  | @@ -295,7 +299,13 @@ public class NtlmProcessingFilter extends SpringSecurityFilter implements Initia
 | 
	
		
			
				|  |  |  		this.retryOnAuthFailure = retryOnFailure;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	protected void doFilterHttp(final HttpServletRequest request, final HttpServletResponse response, final FilterChain chain) throws IOException {
 | 
	
		
			
				|  |  | +    public void setAuthenticationDetailsSource(AuthenticationDetailsSource authenticationDetailsSource) {
 | 
	
		
			
				|  |  | +        Assert.notNull(authenticationDetailsSource, "authenticationDetailsSource cannot be null");
 | 
	
		
			
				|  |  | +        this.authenticationDetailsSource = authenticationDetailsSource;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    protected void doFilterHttp(final HttpServletRequest request,
 | 
	
		
			
				|  |  | +            final HttpServletResponse response, final FilterChain chain) throws IOException, ServletException {
 | 
	
		
			
				|  |  |  		final HttpSession session = request.getSession();
 | 
	
		
			
				|  |  |  		Integer ntlmState = (Integer) session.getAttribute(STATE_ATTR);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -337,7 +347,9 @@ public class NtlmProcessingFilter extends SpringSecurityFilter implements Initia
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        chain.doFilter(request, response);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	/**
 | 
	
		
			
				|  |  |  	 * Returns <code>true</code> if reauthentication is needed on an IE POST.
 | 
	
	
		
			
				|  | @@ -424,7 +436,7 @@ public class NtlmProcessingFilter extends SpringSecurityFilter implements Initia
 | 
	
		
			
				|  |  |  		final Authentication backupAuth;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		authRequest = new NtlmUsernamePasswordAuthenticationToken(auth, stripDomain);
 | 
	
		
			
				|  |  | -		authRequest.setDetails(new WebAuthenticationDetails(request));
 | 
	
		
			
				|  |  | +		authRequest.setDetails(authenticationDetailsSource.buildDetails(request));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		// Place the last username attempted into HttpSession for views
 | 
	
		
			
				|  |  |  		session.setAttribute(AuthenticationProcessingFilter.SPRING_SECURITY_LAST_USERNAME_KEY, authRequest.getName());
 |