1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package edu.internet2.middleware.shibboleth.idp.config.profile.authn;
18
19 import java.util.ArrayList;
20 import java.util.List;
21
22 import org.opensaml.xml.util.DatatypeHelper;
23 import org.opensaml.xml.util.XMLHelper;
24 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory;
26 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
27 import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
28 import org.w3c.dom.Element;
29
30 import edu.internet2.middleware.shibboleth.common.config.SpringConfigurationUtils;
31 import edu.internet2.middleware.shibboleth.idp.config.profile.ProfileHandlerNamespaceHandler;
32
33
34
35
36 public abstract class AbstractLoginHandlerBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {
37
38
39 private static Logger log = LoggerFactory.getLogger(AbstractLoginHandlerBeanDefinitionParser.class);
40
41
42 protected void doParse(Element config, BeanDefinitionBuilder builder) {
43 log.debug("Parsing configuration for {} authentication handler.", XMLHelper.getXSIType(config).getLocalPart());
44
45 long duration = 30 * 60 * 1000;
46 if (config.hasAttributeNS(null, "authenticationDuration")) {
47 duration = SpringConfigurationUtils.parseDurationToMillis("'authenticationDuration' on LoginHandler of type "
48 + XMLHelper.getXSIType(config), config.getAttributeNS(null, "authenticationDuration"), 1000 * 60);
49 }
50 log.debug("Authentication duration: {}ms", duration);
51 builder.addPropertyValue("authenticationDuration", duration);
52
53 String authnMethod;
54 ArrayList<String> authnMethods = new ArrayList<String>();
55 List<Element> authnMethodElems = XMLHelper.getChildElementsByTagNameNS(config,
56 ProfileHandlerNamespaceHandler.NAMESPACE, "AuthenticationMethod");
57 for (Element authnMethodElem : authnMethodElems) {
58 authnMethod = DatatypeHelper.safeTrimOrNullString(authnMethodElem.getTextContent());
59 log.debug("Authentication handler declared support for authentication method {}", authnMethod);
60 authnMethods.add(authnMethod);
61 }
62 builder.addPropertyValue("authenticationMethods", authnMethods);
63 }
64
65
66 protected boolean shouldGenerateId() {
67 return true;
68 }
69 }