1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.opensaml;
18
19 import org.apache.velocity.app.Velocity;
20 import org.apache.velocity.runtime.RuntimeConstants;
21 import org.apache.xml.security.Init;
22 import org.opensaml.saml1.binding.artifact.SAML1ArtifactBuilderFactory;
23 import org.opensaml.saml2.binding.artifact.SAML2ArtifactBuilderFactory;
24 import org.opensaml.xml.ConfigurationException;
25 import org.opensaml.xml.XMLConfigurator;
26 import org.opensaml.xml.security.DefaultSecurityConfigurationBootstrap;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
29
30
31
32
33 public class DefaultBootstrap {
34
35
36 private static Logger log = LoggerFactory.getLogger(DefaultBootstrap.class);
37
38
39 private static String[] xmlToolingConfigs = {
40 "/default-config.xml",
41 "/schema-config.xml",
42 "/signature-config.xml",
43 "/signature-validation-config.xml",
44 "/encryption-config.xml",
45 "/encryption-validation-config.xml",
46 "/soap11-config.xml",
47 "/wsfed11-protocol-config.xml",
48 "/saml1-assertion-config.xml",
49 "/saml1-protocol-config.xml",
50 "/saml1-core-validation-config.xml",
51 "/saml2-assertion-config.xml",
52 "/saml2-protocol-config.xml",
53 "/saml2-core-validation-config.xml",
54 "/saml1-metadata-config.xml",
55 "/saml2-metadata-config.xml",
56 "/saml2-metadata-validation-config.xml",
57 "/saml2-metadata-idp-discovery-config.xml",
58 "/saml2-protocol-thirdparty-config.xml",
59 "/saml2-metadata-query-config.xml",
60 "/saml2-assertion-delegation-restriction-config.xml",
61 "/saml2-ecp-config.xml",
62 "/xacml10-saml2-profile-config.xml",
63 "/xacml11-saml2-profile-config.xml",
64 "/xacml20-context-config.xml",
65 "/xacml20-policy-config.xml",
66 "/xacml2-saml2-profile-config.xml",
67 "/xacml3-saml2-profile-config.xml",
68 "/wsaddressing-config.xml",
69 "/wssecurity-config.xml",
70 };
71
72
73 protected DefaultBootstrap() {
74
75 }
76
77
78
79
80
81
82 public static synchronized void bootstrap() throws ConfigurationException {
83
84 initializeXMLSecurity();
85
86 initializeVelocity();
87
88 initializeXMLTooling(xmlToolingConfigs);
89
90 initializeArtifactBuilderFactories();
91
92 initializeGlobalSecurityConfiguration();
93 }
94
95
96
97
98 protected static void initializeGlobalSecurityConfiguration() {
99 Configuration.setGlobalSecurityConfiguration(DefaultSecurityConfigurationBootstrap.buildDefaultConfig());
100 }
101
102
103
104
105
106
107 protected static void initializeXMLSecurity() throws ConfigurationException {
108 if (!Init.isInitialized()) {
109 log.debug("Initializing Apache XMLSecurity library");
110 Init.init();
111 }
112 }
113
114
115
116
117
118
119 protected static void initializeVelocity() throws ConfigurationException {
120 try {
121 log.debug("Initializing Velocity template engine");
122 Velocity.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS,
123 "org.apache.velocity.runtime.log.NullLogChute");
124 Velocity.setProperty(RuntimeConstants.ENCODING_DEFAULT, "UTF-8");
125 Velocity.setProperty(RuntimeConstants.OUTPUT_ENCODING, "UTF-8");
126 Velocity.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
127 Velocity.setProperty("classpath.resource.loader.class",
128 "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
129 Velocity.init();
130 } catch (Exception e) {
131 throw new ConfigurationException("Unable to initialize Velocity template engine", e);
132 }
133 }
134
135
136
137
138
139
140
141
142 protected static void initializeXMLTooling(String[] providerConfigs) throws ConfigurationException {
143 Class clazz = Configuration.class;
144 XMLConfigurator configurator = new XMLConfigurator();
145
146 for (String config : providerConfigs) {
147 log.debug("Loading XMLTooling configuration {}", config);
148 configurator.load(clazz.getResourceAsStream(config));
149 }
150 }
151
152
153
154
155
156
157 protected static void initializeArtifactBuilderFactories() throws ConfigurationException {
158 log.debug("Initializing SAML Artifact builder factories");
159 Configuration.setSAML1ArtifactBuilderFactory(new SAML1ArtifactBuilderFactory());
160 Configuration.setSAML2ArtifactBuilderFactory(new SAML2ArtifactBuilderFactory());
161 }
162 }