View Javadoc

1   package org.springframework.security.config;
2   
3   import org.springframework.beans.factory.config.BeanDefinition;
4   import org.springframework.beans.factory.config.RuntimeBeanReference;
5   import org.springframework.beans.factory.parsing.BeanComponentDefinition;
6   import org.springframework.beans.factory.support.BeanDefinitionBuilder;
7   import org.springframework.beans.factory.support.RootBeanDefinition;
8   import org.springframework.beans.factory.xml.BeanDefinitionParser;
9   import org.springframework.beans.factory.xml.ParserContext;
10  import org.springframework.security.ui.basicauth.BasicProcessingFilter;
11  import org.springframework.security.ui.basicauth.BasicProcessingFilterEntryPoint;
12  import org.w3c.dom.Element;
13  
14  /**
15   * Creates a {@link BasicProcessingFilter} and {@link BasicProcessingFilterEntryPoint} and
16   * registers them in the application context.
17   *
18   * @author Luke Taylor
19   * @author Ben Alex
20   * @version $Id: BasicAuthenticationBeanDefinitionParser.java 2992 2008-04-23 16:06:54Z luke_t $
21   */
22  public class BasicAuthenticationBeanDefinitionParser implements BeanDefinitionParser {
23      private String realmName;
24  
25      public BasicAuthenticationBeanDefinitionParser(String realmName) {
26          this.realmName = realmName;
27      }
28  
29      public BeanDefinition parse(Element elt, ParserContext parserContext) {
30          BeanDefinitionBuilder filterBuilder = BeanDefinitionBuilder.rootBeanDefinition(BasicProcessingFilter.class);
31          RootBeanDefinition entryPoint = new RootBeanDefinition(BasicProcessingFilterEntryPoint.class);
32          entryPoint.setSource(parserContext.extractSource(elt));
33          entryPoint.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
34          
35          entryPoint.getPropertyValues().addPropertyValue("realmName", realmName);
36      
37          parserContext.getRegistry().registerBeanDefinition(BeanIds.BASIC_AUTHENTICATION_ENTRY_POINT, entryPoint);
38  
39          filterBuilder.addPropertyValue("authenticationManager", new RuntimeBeanReference(BeanIds.AUTHENTICATION_MANAGER));
40          filterBuilder.addPropertyValue("authenticationEntryPoint", new RuntimeBeanReference(BeanIds.BASIC_AUTHENTICATION_ENTRY_POINT));
41  
42          parserContext.getRegistry().registerBeanDefinition(BeanIds.BASIC_AUTHENTICATION_FILTER,
43                  filterBuilder.getBeanDefinition());
44          ConfigUtils.addHttpFilter(parserContext, new RuntimeBeanReference(BeanIds.BASIC_AUTHENTICATION_FILTER));
45          parserContext.registerComponent(new BeanComponentDefinition(filterBuilder.getBeanDefinition(), 
46                  BeanIds.BASIC_AUTHENTICATION_FILTER));
47          return null;
48      }
49  }