660d3eae11b8e51a424b9f296068e3905fb93897
[shibboleth/sp.git] / schemas / shibboleth-targetconfig-1.0.xsd
1 <?xml version="1.0" encoding="US-ASCII"?>
2 <schema targetNamespace="urn:mace:shibboleth:target:config:1.0"
3         xmlns="http://www.w3.org/2001/XMLSchema"
4         xmlns:conf="urn:mace:shibboleth:target:config:1.0"
5         xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
6         elementFormDefault="qualified"
7         attributeFormDefault="unqualified"
8         blockDefault="substitution"
9         version="1.1">
10
11         <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/>
12         <import namespace="urn:oasis:names:tc:SAML:1.0:assertion" schemaLocation="cs-sstc-schema-assertion-1.1.xsd"/>
13
14         <annotation>
15                 <documentation>
16         1.0 schema for XML-based configuration of Shibboleth target libraries and modules.
17         First appearing in Shibboleth 1.2 release.
18         </documentation>
19     </annotation>
20
21         <complexType name="PluggableType">
22         <complexContent>
23             <restriction base="anyType">
24                 <sequence>
25                     <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
26                 </sequence>
27                                 <attribute name="type" type="string" use="required"/>
28                                 <attribute name="uri" type="anyURI" use="optional"/>
29                 <anyAttribute namespace="##other" processContents="lax"/>
30             </restriction>
31         </complexContent>
32         </complexType>
33
34         <element name="ShibbolethTargetConfig" type="conf:SPConfigType"/>
35         <element name="SPConfig" type="conf:SPConfigType"/>
36         <complexType name="SPConfigType">
37                 <annotation>
38                         <documentation>Root element of configuration file</documentation>
39                 </annotation>
40                 <sequence>
41                         <element ref="conf:Extensions" minOccurs="0"/>
42                         <choice minOccurs="0">
43                                 <element name="Global" type="conf:GlobalConfigurationType"/>
44                                 <element name="SHAR" type="conf:GlobalConfigurationType"/>
45                         </choice>
46                         <choice minOccurs="0">
47                                 <element name="Local" type="conf:LocalConfigurationType"/>
48                                 <element name="SHIRE" type="conf:LocalConfigurationType"/>
49                         </choice>
50                         <element ref="conf:Applications"/>
51                         <element name="CredentialsProvider" type="conf:PluggableType" minOccurs="0" maxOccurs="unbounded"/>
52                 </sequence>
53                 <attribute name="logger" type="anyURI" use="optional"/>
54                 <attribute name="clockSkew" type="unsignedInt" use="optional"/>
55                 <anyAttribute namespace="##other" processContents="lax"/>
56         </complexType>
57
58         <element name="Extensions">
59                 <annotation>
60                         <documentation>Container for extension libraries and custom configuration</documentation>
61                 </annotation>
62                 <complexType>
63                         <sequence>
64                                 <element name="Library" minOccurs="0" maxOccurs="unbounded">
65                                         <complexType>
66                                     <complexContent>
67                                         <restriction base="anyType">
68                                                                 <sequence>
69                                                                         <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
70                                                                 </sequence>
71                                                 <attribute name="path" type="anyURI" use="required"/>
72                                                                 <attribute name="fatal" type="boolean" use="optional"/>
73                                                                 <anyAttribute namespace="##other" processContents="lax"/>
74                                         </restriction>
75                                     </complexContent>
76                                         </complexType>
77                                 </element>
78                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
79                         </sequence>
80                 </complexType>
81         </element>
82
83         <complexType name="GlobalConfigurationType">
84                 <annotation>
85                         <documentation>Container for global (server independent) configuration</documentation>
86                 </annotation>
87                 <sequence>
88                         <element ref="conf:Extensions" minOccurs="0"/>
89                         <choice>
90                                 <element name="UnixListener">
91                                         <complexType mixed="false">
92                                                 <complexContent>
93                                                         <restriction base="anyType">
94                                                                 <attribute name="address" type="string" use="required"/>
95                                                         </restriction>
96                                                 </complexContent>
97                                         </complexType>
98                                 </element>
99                                 <element name="TCPListener">
100                                         <complexType mixed="false">
101                                                 <complexContent>
102                                                         <restriction base="anyType">
103                                                                 <attribute name="address" type="string" use="required"/>
104                                                                 <attribute name="port" type="unsignedInt" use="required"/>
105                                                                 <attribute name="acl" use="optional" default="127.0.0.1">
106                                                                         <simpleType>
107                                                                                 <list itemType="string"/>
108                                                                         </simpleType>
109                                                                 </attribute>
110                                                         </restriction>
111                                                 </complexContent>
112                                         </complexType>
113                                 </element>
114                                 <element name="Listener" type="conf:PluggableType"/>
115                         </choice>
116                         <choice>
117                                 <element name="MemorySessionCache">
118                                         <complexType mixed="false">
119                                                 <complexContent>
120                                                         <restriction base="anyType">
121                                                                 <attributeGroup ref="conf:SessionCacheProperties"/>
122                                                                 <anyAttribute namespace="##other" processContents="lax"/>
123                                                         </restriction>
124                                                 </complexContent>
125                                         </complexType>
126                                 </element>
127                                 <element name="MySQLSessionCache">
128                                         <complexType>
129                                                 <sequence>
130                                                         <element name="Argument" type="string" minOccurs="0" maxOccurs="unbounded"/>
131                                                 </sequence>
132                                                 <attributeGroup ref="conf:SessionCacheProperties"/>
133                                                 <attribute name="mysqlTimeout" type="unsignedInt" use="optional" default="14400"/>
134                                                 <attribute name="storeAttributes" type="boolean" use="optional" default="false"/>
135                                                 <anyAttribute namespace="##other" processContents="lax"/>
136                                         </complexType>
137                                 </element>
138                                 <element name="SessionCache">
139                                         <complexType>
140                                                 <complexContent>
141                                                         <extension base="conf:PluggableType">
142                                                                 <attributeGroup ref="conf:SessionCacheProperties"/>
143                                                         </extension>
144                                                 </complexContent>
145                                         </complexType>
146                                 </element>
147                         </choice>
148                         <choice minOccurs="0">
149                                 <element name="MySQLReplayCache">
150                                         <complexType>
151                                                 <sequence>
152                                                         <element name="Argument" type="string" minOccurs="0" maxOccurs="unbounded"/>
153                                                 </sequence>
154                                                 <anyAttribute namespace="##other" processContents="lax"/>
155                                         </complexType>
156                                 </element>
157                                 <element name="ReplayCache" type="conf:PluggableType"/>
158                         </choice>
159                         <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
160                 </sequence>
161                 <attribute name="logger" type="anyURI" use="optional"/>
162                 <anyAttribute namespace="##other" processContents="lax"/>
163         </complexType>
164
165         <attributeGroup name="SessionCacheProperties">
166         <attribute name="cleanupInterval" type="unsignedInt" use="optional" default="300"/>
167         <attribute name="cacheTimeout" type="unsignedInt" use="optional" default="28800"/>
168                 <attribute name="AAConnectTimeout" type="unsignedInt" use="optional" default="15"/>
169                 <attribute name="AATimeout" type="unsignedInt" use="optional" default="30"/>
170                 <attribute name="defaultLifetime" type="unsignedInt" use="optional" default="1800"/>
171                 <attribute name="retryInterval" type="unsignedInt" use="optional" default="300"/>
172                 <attribute name="strictValidity" type="boolean" use="optional" default="true"/>
173                 <attribute name="propagateErrors" type="boolean" use="optional" default="false"/>
174         </attributeGroup>
175
176         <complexType name="LocalConfigurationType">
177                 <annotation>
178                         <documentation>
179                         Container for configuration of locally integrated or platform-specific
180                         features (e.g. web server filters)
181                         </documentation>
182                 </annotation>
183                 <sequence>
184                         <element ref="conf:Extensions" minOccurs="0"/>
185                         <element name="RequestMapProvider" type="conf:PluggableType" minOccurs="0"/>
186                         <element name="Implementation" minOccurs="0">
187                                 <complexType>
188                                         <choice maxOccurs="unbounded">
189                                                 <element ref="conf:ISAPI"/>
190                                                 <element ref="conf:NSAPI"/>
191                                                 <element ref="conf:Java"/>
192                                                 <any namespace="##other" processContents="lax"/>
193                                         </choice>
194                                 </complexType>
195                         </element>
196                         <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
197                 </sequence>
198                 <attribute name="logger" type="anyURI" use="optional"/>
199                 <attribute name="localRelayState" type="boolean" use="optional" default="false"/>
200                 <anyAttribute namespace="##other" processContents="lax"/>
201         </complexType>
202         
203         <element name="ISAPI">
204                 <complexType>
205                         <sequence>
206                                 <element name="Site" maxOccurs="unbounded">
207                                         <complexType mixed="false">
208                                                 <complexContent>
209                                                         <restriction base="anyType">
210                                                                 <sequence>
211                                                                         <element name="Alias" type="string" minOccurs="0" maxOccurs="unbounded"/>
212                                                                 </sequence>
213                                                                 <attribute name="id" type="unsignedInt" use="required"/>
214                                                                 <attribute name="name" type="string" use="required"/>
215                                         <attribute name="port" type="unsignedInt" use="optional"/>
216                                                                 <attribute name="scheme" type="string" use="optional"/>
217                                                         </restriction>
218                                                 </complexContent>
219                                         </complexType>
220                                 </element>
221                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
222                         </sequence>
223                         <attribute name="normalizeRequest" type="boolean" use="optional"/>
224                         <anyAttribute namespace="##other" processContents="lax"/>
225                 </complexType>
226         </element>
227         <element name="NSAPI" type="anyType"/>
228         <element name="Java" type="anyType"/>
229
230         <element name="htaccess" type="conf:UniOperatorType">
231                 <annotation>
232                         <documentation>
233                         A simple example access policy language extension that supersedes Apache .htaccess
234                         </documentation>
235                 </annotation>
236         </element>
237         <element name="OR" type="conf:MultiOperatorType"/>
238         <element name="AND" type="conf:MultiOperatorType"/>
239         <element name="NOT" type="conf:UniOperatorType"/>
240         <complexType name="UniOperatorType">
241                 <choice>
242                         <element ref="conf:AND"/>
243                         <element ref="conf:OR"/>
244                         <element ref="conf:NOT"/>
245                         <element ref="conf:Rule"/>
246                 </choice>
247         </complexType>
248         <complexType name="MultiOperatorType">
249                 <choice minOccurs="2" maxOccurs="unbounded">
250                         <element ref="conf:AND"/>
251                         <element ref="conf:OR"/>
252                         <element ref="conf:NOT"/>
253                         <element ref="conf:Rule"/>
254                 </choice>
255         </complexType>
256         <element name="Rule">
257                 <complexType>
258                         <simpleContent>
259                                 <extension base="conf:listOfStrings">
260                                         <attribute name="require" type="string" use="required"/>
261                                 </extension>
262                         </simpleContent>
263                 </complexType>
264         </element>
265         <simpleType name="listOfStrings">
266                 <list itemType='string'/>
267         </simpleType>
268         
269         <attributeGroup name="ContentSettings">
270                 <attribute name="requireSession" type="boolean" use="optional"/>
271                 <attribute name="exportAssertion" type="boolean" use="optional"/>
272                 <anyAttribute namespace="##other" processContents="lax"/>
273         </attributeGroup>
274         <element name="AccessControlProvider" type="conf:PluggableType"/>
275
276     <element name="RequestMap">
277                 <annotation>
278                         <documentation>
279                         Built-in request mapping syntax, decomposes URLs into Host/Path/Path/...
280                         </documentation>
281                 </annotation>
282         <complexType>
283             <sequence>
284                 <choice minOccurs="0">
285                         <element ref="conf:htaccess"/>
286                         <element ref="conf:AccessControlProvider"/>
287                     </choice>
288                 <element ref="conf:Host" minOccurs="0" maxOccurs="unbounded"/>
289             </sequence>
290             <attribute name="applicationId" type="string" fixed="default"/>
291                 <attributeGroup ref="conf:ContentSettings"/>
292         </complexType>
293     </element>
294
295     <element name="Host">
296         <complexType>
297                 <sequence>
298                 <choice minOccurs="0">
299                         <element ref="conf:htaccess"/>
300                         <element ref="conf:AccessControlProvider"/>
301                     </choice>
302                         <element ref="conf:Path" minOccurs="0" maxOccurs="unbounded"/>
303                 </sequence>
304                 <attribute name="scheme" use="optional">
305                             <simpleType>
306                                 <restriction base="string">
307                                     <enumeration value="http"/>
308                                     <enumeration value="https"/>
309                                     <enumeration value="ftp"/>
310                                     <enumeration value="ldap"/>
311                                     <enumeration value="ldaps"/>
312                                 </restriction>
313                             </simpleType>
314                 </attribute>
315                 <attribute name="name" type="string" use="required"/>
316                 <attribute name="port" type="unsignedInt" use="optional"/>
317                 <attribute name="applicationId" type="string" use="optional"/>
318                 <attributeGroup ref="conf:ContentSettings"/>
319         </complexType>
320     </element>
321
322     <element name="Path">
323         <complexType>
324                 <sequence>
325                 <choice minOccurs="0">
326                         <element ref="conf:htaccess"/>
327                         <element ref="conf:AccessControlProvider"/>
328                     </choice>
329                         <element ref="conf:Path" minOccurs="0" maxOccurs="unbounded"/>
330                 </sequence>
331                 <attribute name="name" type="string" use="required"/>
332                 <attribute name="applicationId" type="string" use="optional"/>
333                 <attributeGroup ref="conf:ContentSettings"/>
334         </complexType>
335     </element>
336
337         <element name="Applications">
338                 <annotation>
339                         <documentation>
340                         Container for global target settings and application-specific overrides
341                         </documentation>
342                 </annotation>
343                 <complexType>
344                         <sequence>
345                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
346                                 <element ref="conf:Sessions"/>
347                                 <element ref="conf:Errors"/>
348                                 <element ref="conf:CredentialUse" minOccurs="0"/>
349                                 <choice minOccurs="0" maxOccurs="unbounded">
350                     <element ref="saml:AttributeDesignator"/>
351                     <element ref="saml:Audience"/>
352                     <element name="AAPProvider" type="conf:PluggableType"/>
353                     <element name="FederationProvider" type="conf:PluggableType"/>
354                     <element name="TrustProvider" type="conf:PluggableType"/>
355                     <element name="RevocationProvider" type="conf:PluggableType"/>
356                                 </choice>
357                                 <element ref="conf:Application" minOccurs="0" maxOccurs="unbounded"/>
358                         </sequence>
359                         <attribute name="id" type="string" fixed="default"/>
360                         <attribute name="providerId" type="anyURI" use="required"/>
361                         <attribute name="homeURL" type="anyURI" use="optional"/>
362                 <anyAttribute namespace="##other" processContents="lax"/>
363                 </complexType>
364         </element>
365         
366         <element name="Application">
367                 <annotation>
368                         <documentation>
369                         Container for application-specific overrides
370                         </documentation>
371                 </annotation>
372                 <complexType>
373                         <sequence>
374                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
375                                 <element ref="conf:Sessions"/>
376                                 <element ref="conf:Errors" minOccurs="0"/>
377                                 <element ref="conf:CredentialUse" minOccurs="0"/>
378                                 <choice minOccurs="0" maxOccurs="unbounded">
379                     <element ref="saml:AttributeDesignator"/>
380                     <element ref="saml:Audience"/>
381                     <element name="AAPProvider" type="conf:PluggableType"/>
382                     <element name="FederationProvider" type="conf:PluggableType"/>
383                     <element name="TrustProvider" type="conf:PluggableType"/>
384                     <element name="RevocationProvider" type="conf:PluggableType"/>
385                                 </choice>
386                         </sequence>
387                         <attribute name="id" type="string" use="required"/>
388                         <attribute name="providerId" type="anyURI" use="optional"/>
389                         <attribute name="homeURL" type="anyURI" use="optional"/>
390                 <anyAttribute namespace="##other" processContents="lax"/>
391                 </complexType>
392         </element>
393
394         <element name="Sessions">
395                 <annotation>
396                         <documentation>Container for specifying app session establishment and policy</documentation>
397                 </annotation>
398                 <complexType>
399                         <attribute name="wayfURL" type="anyURI" use="optional"/>
400                         <!-- deprecated --> <attribute name="shireURL" type="anyURI" use="optional"/>
401                         <attribute name="shireSSL" type="boolean" use="optional"/>
402                         <attribute name="cookieName" type="string" use="optional"/>
403                         <attribute name="cookieProps" type="string" use="optional"/>
404                         <attribute name="lifetime" type="unsignedInt" use="optional"/>
405                         <attribute name="timeout" type="unsignedInt" use="optional"/>
406                         <attribute name="checkAddress" type="boolean" use="optional"/>
407                         <attribute name="oldAuthnRequest" type="boolean" use="optional"/>
408                         <anyAttribute namespace="##any" processContents="lax"/>
409                 </complexType>
410         </element>
411
412         <element name="Errors">
413                 <annotation>
414                         <documentation>Container for error templates and associated details</documentation>
415                 </annotation>
416                 <complexType>
417             <complexContent>
418                 <restriction base="anyType">
419                         <!-- deprecated --> <attribute name="shire" type="anyURI" use="optional"/>
420                                         <attribute name="session" type="anyURI" use="optional"/>
421                         <attribute name="rm" type="anyURI" use="required"/>
422                         <attribute name="access" type="anyURI" use="optional"/>
423                         <attribute name="supportContact" type="string" use="optional"/>
424                         <attribute name="logoLocation" type="anyURI" use="optional"/>
425                         <attribute name="styleSheet" type="anyURI" use="optional"/>
426                                         <anyAttribute namespace="##any" processContents="lax"/>
427                 </restriction>
428             </complexContent>
429                 </complexType>
430         </element>
431
432         <attributeGroup name="CredentialUseGroup">
433                 <attribute name="TLS" type="string" use="required"/>
434                 <attribute name="Signing" type="string" use="required"/>
435                 <attribute name="signRequest" type="boolean" use="optional" default="false"/>
436                 <attribute name="signedResponse" type="boolean" use="optional" default="false"/>
437                 <attribute name="signedAssertions" type="boolean" use="optional" default="false"/>
438         </attributeGroup>
439
440         <element name="CredentialUse">
441                 <annotation>
442                         <documentation>Container for specifying credentials to use</documentation>
443                 </annotation>
444                 <complexType>
445                         <sequence>
446                                 <element name="RelyingParty" minOccurs="0" maxOccurs="unbounded">
447                                         <complexType mixed="false">
448                                                 <complexContent>
449                                                         <restriction base="anyType">
450                                                                 <attribute name="Name" type="string" use="required"/>
451                                                                 <attributeGroup ref="conf:CredentialUseGroup"/>
452                                                         </restriction>
453                                                 </complexContent>
454                                         </complexType>
455                                 </element>
456                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
457                         </sequence>
458                         <attributeGroup ref="conf:CredentialUseGroup"/>
459                 <anyAttribute namespace="##other" processContents="lax"/>
460                 </complexType>
461         </element>
462 </schema>
463