Add option to set unset headers to fixed value.
[shibboleth/cpp-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         xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
7         elementFormDefault="qualified"
8         attributeFormDefault="unqualified"
9         blockDefault="substitution"
10         version="1.1">
11
12         <import namespace="urn:oasis:names:tc:SAML:1.0:assertion" schemaLocation="cs-sstc-schema-assertion-1.1.xsd"/>
13         <import namespace="urn:oasis:names:tc:SAML:2.0:metadata" schemaLocation="saml-schema-metadata-2.0.xsd"/>
14
15         <annotation>
16                 <documentation>
17         1.0 schema for XML-based configuration of Shibboleth target libraries and modules.
18         First appearing in Shibboleth 1.2 release.
19         </documentation>
20     </annotation>
21
22         <complexType name="PluggableType">
23                 <sequence>
24                         <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
25                 </sequence>
26                 <attribute name="type" type="string" use="required"/>
27                 <attribute name="uri" type="anyURI" use="optional"/>
28                 <anyAttribute namespace="##any" processContents="lax"/>
29         </complexType>
30
31         <element name="ShibbolethTargetConfig" type="conf:SPConfigType"/>
32         <element name="SPConfig" type="conf:SPConfigType"/>
33         <complexType name="SPConfigType">
34                 <annotation>
35                         <documentation>Root element of configuration file</documentation>
36                 </annotation>
37                 <sequence>
38                         <element ref="conf:Extensions" minOccurs="0"/>
39                         <choice minOccurs="0">
40                                 <element name="Global" type="conf:GlobalConfigurationType"/>
41                                 <element name="SHAR" type="conf:GlobalConfigurationType"/>
42                         </choice>
43                         <choice minOccurs="0">
44                                 <element name="Local" type="conf:LocalConfigurationType"/>
45                                 <element name="SHIRE" type="conf:LocalConfigurationType"/>
46                         </choice>
47                         <element ref="conf:Applications"/>
48                         <element name="CredentialsProvider" type="conf:PluggableType" minOccurs="0" maxOccurs="unbounded"/>
49                         <element ref="conf:AttributeFactory" minOccurs="0" maxOccurs="unbounded"/>
50                 </sequence>
51                 <attribute name="logger" type="anyURI" use="optional"/>
52                 <attribute name="clockSkew" type="unsignedInt" use="optional"/>
53                 <anyAttribute namespace="##other" processContents="lax"/>
54         </complexType>
55
56         <element name="Extensions">
57                 <annotation>
58                         <documentation>Container for extension libraries and custom configuration</documentation>
59                 </annotation>
60                 <complexType>
61                         <sequence>
62                                 <element name="Library" minOccurs="0" maxOccurs="unbounded">
63                                         <complexType>
64                                                 <sequence>
65                                                         <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
66                                                 </sequence>
67                                                 <attribute name="path" type="anyURI" use="required"/>
68                                                 <attribute name="fatal" type="boolean" use="optional"/>
69                                                 <anyAttribute namespace="##other" processContents="lax"/>
70                                         </complexType>
71                                 </element>
72                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
73                         </sequence>
74                 </complexType>
75         </element>
76
77         <complexType name="GlobalConfigurationType">
78                 <annotation>
79                         <documentation>Container for global (server independent) configuration</documentation>
80                 </annotation>
81                 <sequence>
82                         <element ref="conf:Extensions" minOccurs="0"/>
83                         <choice>
84                                 <element name="UnixListener">
85                                         <complexType>
86                                                 <attribute name="address" type="string" use="required"/>
87                                         </complexType>
88                                 </element>
89                                 <element name="TCPListener">
90                                         <complexType>
91                                                 <attribute name="address" type="string" use="required"/>
92                                                 <attribute name="port" type="unsignedInt" use="required"/>
93                                                 <attribute name="acl" use="optional" default="127.0.0.1">
94                                                         <simpleType>
95                                                                 <list itemType="string"/>
96                                                         </simpleType>
97                                                 </attribute>
98                                         </complexType>
99                                 </element>
100                                 <element name="MemoryListener" type="conf:PluggableType"/>
101                                 <element name="Listener" type="conf:PluggableType"/>
102                         </choice>
103                         <choice>
104                                 <element name="MemorySessionCache">
105                                         <complexType>
106                                                 <attributeGroup ref="conf:SessionCacheProperties"/>
107                                                 <anyAttribute namespace="##other" processContents="lax"/>
108                                         </complexType>
109                                 </element>
110                                 <element name="MySQLSessionCache">
111                                         <complexType>
112                                                 <sequence>
113                                                         <element name="Argument" type="string" minOccurs="0" maxOccurs="unbounded"/>
114                                                 </sequence>
115                                                 <attributeGroup ref="conf:SessionCacheProperties"/>
116                                                 <attribute name="mysqlTimeout" type="unsignedInt" use="optional" default="14400"/>
117                                                 <attribute name="storeAttributes" type="boolean" use="optional" default="false"/>
118                                                 <anyAttribute namespace="##other" processContents="lax"/>
119                                         </complexType>
120                                 </element>
121                                 <element name="SessionCache">
122                                         <complexType>
123                                                 <complexContent>
124                                                         <extension base="conf:PluggableType">
125                                                                 <attributeGroup ref="conf:SessionCacheProperties"/>
126                                                         </extension>
127                                                 </complexContent>
128                                         </complexType>
129                                 </element>
130                         </choice>
131                         <choice minOccurs="0">
132                                 <element name="MySQLReplayCache">
133                                         <complexType>
134                                                 <sequence>
135                                                         <element name="Argument" type="string" minOccurs="0" maxOccurs="unbounded"/>
136                                                 </sequence>
137                                                 <anyAttribute namespace="##other" processContents="lax"/>
138                                         </complexType>
139                                 </element>
140                                 <element name="ReplayCache" type="conf:PluggableType"/>
141                         </choice>
142                         <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
143                 </sequence>
144                 <attribute name="logger" type="anyURI" use="optional"/>
145                 <anyAttribute namespace="##other" processContents="lax"/>
146         </complexType>
147
148         <attributeGroup name="SessionCacheProperties">
149         <attribute name="cleanupInterval" type="unsignedInt" use="optional" default="300"/>
150         <attribute name="cacheTimeout" type="unsignedInt" use="optional" default="28800"/>
151                 <attribute name="AAConnectTimeout" type="unsignedInt" use="optional" default="15"/>
152                 <attribute name="AATimeout" type="unsignedInt" use="optional" default="30"/>
153                 <attribute name="defaultLifetime" type="unsignedInt" use="optional" default="1800"/>
154                 <attribute name="retryInterval" type="unsignedInt" use="optional" default="300"/>
155                 <attribute name="strictValidity" type="boolean" use="optional" default="true"/>
156                 <attribute name="propagateErrors" type="boolean" use="optional" default="false"/>
157         </attributeGroup>
158
159         <complexType name="LocalConfigurationType">
160                 <annotation>
161                         <documentation>
162                         Container for configuration of locally integrated or platform-specific
163                         features (e.g. web server filters)
164                         </documentation>
165                 </annotation>
166                 <sequence>
167                         <element ref="conf:Extensions" minOccurs="0"/>
168                         <element name="RequestMapProvider" type="conf:PluggableType" minOccurs="0"/>
169                         <element name="Implementation" minOccurs="0">
170                                 <complexType>
171                                         <choice maxOccurs="unbounded">
172                                                 <element ref="conf:ISAPI"/>
173                                                 <any namespace="##other" processContents="lax"/>
174                                         </choice>
175                                 </complexType>
176                         </element>
177                         <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
178                 </sequence>
179                 <attribute name="logger" type="anyURI" use="optional"/>
180                 <attribute name="localRelayState" type="boolean" use="optional" default="false"/>
181                 <attribute name="unsetHeaderValue" type="string" use="optional"/>
182                 <anyAttribute namespace="##other" processContents="lax"/>
183         </complexType>
184         
185         <element name="ISAPI">
186                 <complexType>
187                         <sequence>
188                                 <element name="Site" maxOccurs="unbounded">
189                                         <complexType>
190                                                 <sequence>
191                                                         <element name="Alias" type="string" minOccurs="0" maxOccurs="unbounded"/>
192                                                 </sequence>
193                                                 <attribute name="id" type="unsignedInt" use="required"/>
194                                                 <attribute name="name" type="string" use="required"/>
195                                                 <attribute name="port" type="unsignedInt" use="optional"/>
196                                                 <attribute name="sslport" type="unsignedInt" use="optional"/>
197                                                 <attribute name="scheme" type="string" use="optional"/>
198                                         </complexType>
199                                 </element>
200                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
201                         </sequence>
202                         <attribute name="normalizeRequest" type="boolean" use="optional"/>
203                         <anyAttribute namespace="##other" processContents="lax"/>
204                 </complexType>
205         </element>
206         <element name="NSAPI" type="anyType"/>
207         <element name="Java" type="anyType"/>
208
209         <element name="AccessControl" type="conf:UniOperatorType">
210                 <annotation>
211                         <documentation>
212                         A simple example access policy language extension that supersedes Apache .htaccess
213                         </documentation>
214                 </annotation>
215         </element>
216         <element name="OR" type="conf:MultiOperatorType"/>
217         <element name="AND" type="conf:MultiOperatorType"/>
218         <element name="NOT" type="conf:UniOperatorType"/>
219         <complexType name="UniOperatorType">
220                 <choice>
221                         <element ref="conf:AND"/>
222                         <element ref="conf:OR"/>
223                         <element ref="conf:NOT"/>
224                         <element ref="conf:Rule"/>
225                 </choice>
226         </complexType>
227         <complexType name="MultiOperatorType">
228                 <choice minOccurs="2" maxOccurs="unbounded">
229                         <element ref="conf:AND"/>
230                         <element ref="conf:OR"/>
231                         <element ref="conf:NOT"/>
232                         <element ref="conf:Rule"/>
233                 </choice>
234         </complexType>
235         <element name="Rule">
236                 <complexType>
237                         <simpleContent>
238                                 <extension base="conf:listOfStrings">
239                                         <attribute name="require" type="string" use="required"/>
240                                 </extension>
241                         </simpleContent>
242                 </complexType>
243         </element>
244         <simpleType name="listOfStrings">
245                 <list itemType="string"/>
246         </simpleType>
247         
248         <attributeGroup name="ContentSettings">
249                 <attribute name="authType" type="string" use="optional"/>
250                 <attribute name="requireSession" type="boolean" use="optional"/>
251                 <attribute name="requireSessionWith" type="string" use="optional"/>
252                 <attribute name="exportAssertion" type="boolean" use="optional"/>
253                 <attribute name="redirectToSSL" type="unsignedInt" use="optional"/>
254                 <anyAttribute namespace="##other" processContents="lax"/>
255         </attributeGroup>
256         <element name="AccessControlProvider" type="conf:PluggableType"/>
257         <element name="htaccess" type="conf:PluggableType"/>
258
259     <element name="RequestMap">
260                 <annotation>
261                         <documentation>
262                         Built-in request mapping syntax, decomposes URLs into Host/Path/Path/...
263                         </documentation>
264                 </annotation>
265         <complexType>
266             <sequence>
267                 <choice minOccurs="0">
268                         <element ref="conf:htaccess"/>
269                                         <element ref="conf:AccessControl"/>
270                         <element ref="conf:AccessControlProvider"/>
271                     </choice>
272                 <element ref="conf:Host" minOccurs="0" maxOccurs="unbounded"/>
273             </sequence>
274             <attribute name="applicationId" type="string" fixed="default"/>
275                 <attributeGroup ref="conf:ContentSettings"/>
276         </complexType>
277     </element>
278
279     <element name="Host">
280         <complexType>
281                 <sequence>
282                 <choice minOccurs="0">
283                         <element ref="conf:htaccess"/>
284                                         <element ref="conf:AccessControl"/>
285                         <element ref="conf:AccessControlProvider"/>
286                     </choice>
287                         <element ref="conf:Path" minOccurs="0" maxOccurs="unbounded"/>
288                 </sequence>
289                 <attribute name="scheme" use="optional">
290                             <simpleType>
291                                 <restriction base="string">
292                                     <enumeration value="http"/>
293                                     <enumeration value="https"/>
294                                     <enumeration value="ftp"/>
295                                     <enumeration value="ldap"/>
296                                     <enumeration value="ldaps"/>
297                                 </restriction>
298                             </simpleType>
299                 </attribute>
300                 <attribute name="name" type="string" use="required"/>
301                 <attribute name="port" type="unsignedInt" use="optional"/>
302                 <attribute name="applicationId" type="string" use="optional"/>
303                 <attributeGroup ref="conf:ContentSettings"/>
304         </complexType>
305     </element>
306
307     <element name="Path">
308         <complexType>
309                 <sequence>
310                 <choice minOccurs="0">
311                         <element ref="conf:htaccess"/>
312                                         <element ref="conf:AccessControl"/>
313                         <element ref="conf:AccessControlProvider"/>
314                     </choice>
315                         <element ref="conf:Path" minOccurs="0" maxOccurs="unbounded"/>
316                 </sequence>
317                 <attribute name="name" type="string" use="required"/>
318                 <attribute name="applicationId" type="string" use="optional"/>
319                 <attributeGroup ref="conf:ContentSettings"/>
320         </complexType>
321     </element>
322
323         <element name="Applications">
324                 <annotation>
325                         <documentation>Container for global target settings and application-specific overrides</documentation>
326                 </annotation>
327                 <complexType>
328                         <sequence>
329                                 <element ref="conf:Sessions"/>
330                                 <element ref="conf:Errors"/>
331                                 <element ref="conf:CredentialUse" minOccurs="0"/>
332                                 <choice minOccurs="0" maxOccurs="unbounded">
333                     <element ref="saml:AttributeDesignator"/>
334                     <element ref="saml:Audience"/>
335                     <element name="AAPProvider" type="conf:PluggableType"/>
336                     <!-- deprecated --> <element name="FederationProvider" type="conf:PluggableType"/>
337                     <element name="MetadataProvider" type="conf:PluggableType"/>
338                     <element name="TrustProvider" type="conf:PluggableType"/>
339                                 </choice>
340                                 <element ref="conf:Application" minOccurs="0" maxOccurs="unbounded"/>
341                         </sequence>
342                         <attribute name="id" type="string" fixed="default"/>
343                         <attribute name="providerId" type="anyURI" use="required"/>
344                         <attribute name="homeURL" type="anyURI" use="optional"/>
345                 <anyAttribute namespace="##other" processContents="lax"/>
346                 </complexType>
347         </element>
348         
349         <element name="Application">
350                 <annotation>
351                         <documentation>Container for application-specific overrides</documentation>
352                 </annotation>
353                 <complexType>
354                         <sequence>
355                                 <element ref="conf:Sessions" minOccurs="0"/>
356                                 <element ref="conf:Errors" minOccurs="0"/>
357                                 <element ref="conf:CredentialUse" minOccurs="0"/>
358                                 <choice minOccurs="0" maxOccurs="unbounded">
359                     <element ref="saml:AttributeDesignator"/>
360                     <element ref="saml:Audience"/>
361                     <element name="AAPProvider" type="conf:PluggableType"/>
362                     <!-- deprecated --> <element name="FederationProvider" type="conf:PluggableType"/>
363                     <element name="MetadataProvider" type="conf:PluggableType"/>
364                     <element name="TrustProvider" type="conf:PluggableType"/>
365                                 </choice>
366                         </sequence>
367                         <attribute name="id" type="string" use="required"/>
368                         <attribute name="providerId" type="anyURI" use="optional"/>
369                         <attribute name="homeURL" type="anyURI" use="optional"/>
370                 <anyAttribute namespace="##other" processContents="lax"/>
371                 </complexType>
372         </element>
373
374         <element name="KeyInfoResolver" type="conf:PluggableType">
375                 <annotation>
376                         <documentation>
377                         Custom plug-in that resolves ds:KeyInfo elements into public keys, used in
378                         TrustProvider elements.
379                         </documentation>
380                 </annotation>
381         </element>
382
383         <element name="Sessions">
384                 <annotation>
385                         <documentation>Container for specifying app session establishment and policy</documentation>
386                 </annotation>
387                 <complexType>
388                         <choice minOccurs="0" maxOccurs="unbounded">
389                                 <element ref="conf:SessionInitiator"/>
390                                 <element ref="md:AssertionConsumerService"/>
391                                 <element ref="md:SingleLogoutService"/>
392                                 <element ref="conf:DiagnosticService"/>
393                                 <element name="ExtensionService" type="conf:PluggableType"/>
394                         </choice>
395                         <!-- deprecated --> <attribute name="wayfURL" type="anyURI" use="optional"/>
396                         <!-- deprecated --> <attribute name="shireURL" type="anyURI" use="optional"/>
397                         <!-- deprecated --> <attribute name="shireSSL" type="boolean" use="optional"/>
398                         <attribute name="handlerURL" type="anyURI" use="optional"/>
399                         <attribute name="handlerSSL" type="boolean" use="optional" default="true"/>
400                         <attribute name="cookieName" type="string" use="optional"/>
401                         <attribute name="cookieProps" type="string" use="optional"/>
402                         <attribute name="idpHistory" type="boolean" use="optional" default="true"/>
403                         <attribute name="idpHistoryDays" type="unsignedInt" 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="consistentAddress" type="boolean" use="optional" default="true"/>
408                         <attribute name="checkReplay" type="boolean" use="optional" default="true"/>
409                         <anyAttribute namespace="##other" processContents="lax"/>
410                 </complexType>
411         </element>
412         <element name="SessionInitiator">
413                 <annotation>
414                         <documentation>Used to specify WAYF/Discovery services (external or internal)</documentation>
415                 </annotation>
416                 <complexType>
417                         <sequence>
418                                 <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
419                         </sequence>
420                         <attribute name="Location" type="anyURI" use="required"/>
421                         <attribute name="Binding" type="anyURI" use="required"/>
422                         <attribute name="wayfURL" type="anyURI" use="optional"/>
423                         <attribute name="wayfBinding" type="anyURI" use="optional"/>
424                         <attribute name="checkCDC" type="anyURI" use="optional"/>
425                         <attribute name="isDefault" type="boolean" use="optional"/>
426                         <attribute name="id" type="string" use="optional"/>
427                         <anyAttribute namespace="##any" processContents="lax"/>
428                 </complexType>
429         </element>
430         <element name="DiagnosticService">
431                 <annotation>
432                         <documentation>Used to specify internal diagnostic capabilities</documentation>
433                 </annotation>
434                 <complexType>
435                         <sequence>
436                                 <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
437                         </sequence>
438                         <attribute name="Location" type="anyURI" use="required"/>
439                         <attribute name="Binding" type="anyURI" use="required"/>
440                         <attribute name="echo" type="boolean" use="optional"/>
441                         <attribute name="log" type="boolean" use="optional"/>
442                         <attribute name="config" type="boolean" use="optional"/>
443                         <attribute name="acl" use="optional">
444                                 <simpleType>
445                                         <list itemType="string"/>
446                                 </simpleType>
447                         </attribute>
448                         <anyAttribute namespace="##any" processContents="lax"/>
449                 </complexType>
450         </element>
451
452         <element name="Errors">
453                 <annotation>
454                         <documentation>Container for error templates and associated details</documentation>
455                 </annotation>
456                 <complexType>
457                         <sequence>
458                                 <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
459                         </sequence>
460                         <!-- deprecated --> <attribute name="shire" type="anyURI" use="optional"/>
461                         <attribute name="session" type="anyURI" use="optional"/>
462                         <attribute name="metadata" type="anyURI" use="optional"/>
463                         <attribute name="rm" type="anyURI" use="required"/>
464                         <attribute name="access" type="anyURI" use="optional"/>
465                         <attribute name="ssl" type="anyURI" use="optional"/>
466                         <attribute name="supportContact" type="string" use="optional"/>
467                         <attribute name="logoLocation" type="anyURI" use="optional"/>
468                         <attribute name="styleSheet" type="anyURI" use="optional"/>
469                         <anyAttribute namespace="##any" processContents="lax"/>
470                 </complexType>
471         </element>
472
473         <attributeGroup name="CredentialUseGroup">
474                 <attribute name="TLS" type="string" use="optional"/>
475                 <attribute name="Signing" type="string" use="optional"/>
476                 <attribute name="signRequest" type="boolean" use="optional" default="false"/>
477                 <attribute name="signatureAlg" type="anyURI" use="optional"/>
478                 <attribute name="digestAlg" type="anyURI" use="optional"/>
479                 <attribute name="signedResponse" type="boolean" use="optional" default="false"/>
480                 <attribute name="signedAssertions" type="boolean" use="optional" default="false"/>
481                 <attribute name="authType" use="optional">
482                         <simpleType>
483                                 <restriction base="string">
484                                         <enumeration value="basic"/>
485                                         <enumeration value="digest"/>
486                                         <enumeration value="ntlm"/>
487                                         <enumeration value="gss"/>
488                                 </restriction>
489                         </simpleType>
490                 </attribute>
491                 <attribute name="authUsername" use="optional"/>
492                 <attribute name="authPassword" use="optional"/>
493         </attributeGroup>
494
495         <element name="CredentialUse">
496                 <annotation>
497                         <documentation>Container for specifying credentials to use</documentation>
498                 </annotation>
499                 <complexType>
500                         <sequence>
501                                 <element name="RelyingParty" minOccurs="0" maxOccurs="unbounded">
502                                         <complexType>
503                                                 <sequence>
504                                                         <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
505                                                 </sequence>
506                                                 <attribute name="Name" type="string" use="required"/>
507                                                 <attributeGroup ref="conf:CredentialUseGroup"/>
508                                                 <anyAttribute namespace="##other" processContents="lax"/>
509                                         </complexType>
510                                 </element>
511                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
512                         </sequence>
513                         <attributeGroup ref="conf:CredentialUseGroup"/>
514                 <anyAttribute namespace="##other" processContents="lax"/>
515                 </complexType>
516         </element>
517         
518         <element name="AttributeFactory">
519                 <annotation>
520                         <documentation>Specifies a plugin that implements a specialized SAML attribute</documentation>
521                 </annotation>
522                 <complexType>
523                         <sequence>
524                                 <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
525                         </sequence>
526                         <attribute name="type" type="string" use="required"/>
527                         <attribute name="AttributeName" type="string" use="required"/>
528                 <anyAttribute namespace="##other" processContents="lax"/>
529                 </complexType>
530         </element>
531         
532 </schema>
533