Added sslport to ISAPI sites.
[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="sslport" type="unsignedInt" use="optional"/>
217                                                                 <attribute name="scheme" type="string" use="optional"/>
218                                                         </restriction>
219                                                 </complexContent>
220                                         </complexType>
221                                 </element>
222                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
223                         </sequence>
224                         <attribute name="normalizeRequest" type="boolean" use="optional"/>
225                         <anyAttribute namespace="##other" processContents="lax"/>
226                 </complexType>
227         </element>
228         <element name="NSAPI" type="anyType"/>
229         <element name="Java" type="anyType"/>
230
231         <element name="htaccess" type="conf:UniOperatorType">
232                 <annotation>
233                         <documentation>
234                         A simple example access policy language extension that supersedes Apache .htaccess
235                         </documentation>
236                 </annotation>
237         </element>
238         <element name="OR" type="conf:MultiOperatorType"/>
239         <element name="AND" type="conf:MultiOperatorType"/>
240         <element name="NOT" type="conf:UniOperatorType"/>
241         <complexType name="UniOperatorType">
242                 <choice>
243                         <element ref="conf:AND"/>
244                         <element ref="conf:OR"/>
245                         <element ref="conf:NOT"/>
246                         <element ref="conf:Rule"/>
247                 </choice>
248         </complexType>
249         <complexType name="MultiOperatorType">
250                 <choice minOccurs="2" maxOccurs="unbounded">
251                         <element ref="conf:AND"/>
252                         <element ref="conf:OR"/>
253                         <element ref="conf:NOT"/>
254                         <element ref="conf:Rule"/>
255                 </choice>
256         </complexType>
257         <element name="Rule">
258                 <complexType>
259                         <simpleContent>
260                                 <extension base="conf:listOfStrings">
261                                         <attribute name="require" type="string" use="required"/>
262                                 </extension>
263                         </simpleContent>
264                 </complexType>
265         </element>
266         <simpleType name="listOfStrings">
267                 <list itemType='string'/>
268         </simpleType>
269         
270         <attributeGroup name="ContentSettings">
271                 <attribute name="requireSession" type="boolean" use="optional"/>
272                 <attribute name="exportAssertion" type="boolean" use="optional"/>
273                 <anyAttribute namespace="##other" processContents="lax"/>
274         </attributeGroup>
275         <element name="AccessControlProvider" type="conf:PluggableType"/>
276
277     <element name="RequestMap">
278                 <annotation>
279                         <documentation>
280                         Built-in request mapping syntax, decomposes URLs into Host/Path/Path/...
281                         </documentation>
282                 </annotation>
283         <complexType>
284             <sequence>
285                 <choice minOccurs="0">
286                         <element ref="conf:htaccess"/>
287                         <element ref="conf:AccessControlProvider"/>
288                     </choice>
289                 <element ref="conf:Host" minOccurs="0" maxOccurs="unbounded"/>
290             </sequence>
291             <attribute name="applicationId" type="string" fixed="default"/>
292                 <attributeGroup ref="conf:ContentSettings"/>
293         </complexType>
294     </element>
295
296     <element name="Host">
297         <complexType>
298                 <sequence>
299                 <choice minOccurs="0">
300                         <element ref="conf:htaccess"/>
301                         <element ref="conf:AccessControlProvider"/>
302                     </choice>
303                         <element ref="conf:Path" minOccurs="0" maxOccurs="unbounded"/>
304                 </sequence>
305                 <attribute name="scheme" use="optional">
306                             <simpleType>
307                                 <restriction base="string">
308                                     <enumeration value="http"/>
309                                     <enumeration value="https"/>
310                                     <enumeration value="ftp"/>
311                                     <enumeration value="ldap"/>
312                                     <enumeration value="ldaps"/>
313                                 </restriction>
314                             </simpleType>
315                 </attribute>
316                 <attribute name="name" type="string" use="required"/>
317                 <attribute name="port" type="unsignedInt" use="optional"/>
318                 <attribute name="applicationId" type="string" use="optional"/>
319                 <attributeGroup ref="conf:ContentSettings"/>
320         </complexType>
321     </element>
322
323     <element name="Path">
324         <complexType>
325                 <sequence>
326                 <choice minOccurs="0">
327                         <element ref="conf:htaccess"/>
328                         <element ref="conf:AccessControlProvider"/>
329                     </choice>
330                         <element ref="conf:Path" minOccurs="0" maxOccurs="unbounded"/>
331                 </sequence>
332                 <attribute name="name" type="string" use="required"/>
333                 <attribute name="applicationId" type="string" use="optional"/>
334                 <attributeGroup ref="conf:ContentSettings"/>
335         </complexType>
336     </element>
337
338         <element name="Applications">
339                 <annotation>
340                         <documentation>
341                         Container for global target settings and application-specific overrides
342                         </documentation>
343                 </annotation>
344                 <complexType>
345                         <sequence>
346                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
347                                 <element ref="conf:Sessions"/>
348                                 <element ref="conf:Errors"/>
349                                 <element ref="conf:CredentialUse" minOccurs="0"/>
350                                 <choice minOccurs="0" maxOccurs="unbounded">
351                     <element ref="saml:AttributeDesignator"/>
352                     <element ref="saml:Audience"/>
353                     <element name="AAPProvider" type="conf:PluggableType"/>
354                     <element name="FederationProvider" type="conf:PluggableType"/>
355                     <element name="TrustProvider" type="conf:PluggableType"/>
356                     <element name="RevocationProvider" type="conf:PluggableType"/>
357                                 </choice>
358                                 <element ref="conf:Application" minOccurs="0" maxOccurs="unbounded"/>
359                         </sequence>
360                         <attribute name="id" type="string" fixed="default"/>
361                         <attribute name="providerId" type="anyURI" use="required"/>
362                         <attribute name="homeURL" type="anyURI" use="optional"/>
363                 <anyAttribute namespace="##other" processContents="lax"/>
364                 </complexType>
365         </element>
366         
367         <element name="Application">
368                 <annotation>
369                         <documentation>
370                         Container for application-specific overrides
371                         </documentation>
372                 </annotation>
373                 <complexType>
374                         <sequence>
375                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
376                                 <element ref="conf:Sessions"/>
377                                 <element ref="conf:Errors" minOccurs="0"/>
378                                 <element ref="conf:CredentialUse" minOccurs="0"/>
379                                 <choice minOccurs="0" maxOccurs="unbounded">
380                     <element ref="saml:AttributeDesignator"/>
381                     <element ref="saml:Audience"/>
382                     <element name="AAPProvider" type="conf:PluggableType"/>
383                     <element name="FederationProvider" type="conf:PluggableType"/>
384                     <element name="TrustProvider" type="conf:PluggableType"/>
385                     <element name="RevocationProvider" type="conf:PluggableType"/>
386                                 </choice>
387                         </sequence>
388                         <attribute name="id" type="string" use="required"/>
389                         <attribute name="providerId" type="anyURI" use="optional"/>
390                         <attribute name="homeURL" type="anyURI" use="optional"/>
391                 <anyAttribute namespace="##other" processContents="lax"/>
392                 </complexType>
393         </element>
394
395         <element name="Sessions">
396                 <annotation>
397                         <documentation>Container for specifying app session establishment and policy</documentation>
398                 </annotation>
399                 <complexType>
400                         <attribute name="wayfURL" type="anyURI" use="optional"/>
401                         <!-- deprecated --> <attribute name="shireURL" type="anyURI" use="optional"/>
402                         <attribute name="shireSSL" type="boolean" use="optional"/>
403                         <attribute name="cookieName" type="string" use="optional"/>
404                         <attribute name="cookieProps" type="string" use="optional"/>
405                         <attribute name="lifetime" type="unsignedInt" use="optional"/>
406                         <attribute name="timeout" type="unsignedInt" use="optional"/>
407                         <attribute name="checkAddress" type="boolean" use="optional"/>
408                         <attribute name="oldAuthnRequest" type="boolean" use="optional"/>
409                         <anyAttribute namespace="##any" processContents="lax"/>
410                 </complexType>
411         </element>
412
413         <element name="Errors">
414                 <annotation>
415                         <documentation>Container for error templates and associated details</documentation>
416                 </annotation>
417                 <complexType>
418             <complexContent>
419                 <restriction base="anyType">
420                         <!-- deprecated --> <attribute name="shire" type="anyURI" use="optional"/>
421                                         <attribute name="session" type="anyURI" use="optional"/>
422                         <attribute name="rm" type="anyURI" use="required"/>
423                         <attribute name="access" type="anyURI" use="optional"/>
424                         <attribute name="supportContact" type="string" use="optional"/>
425                         <attribute name="logoLocation" type="anyURI" use="optional"/>
426                         <attribute name="styleSheet" type="anyURI" use="optional"/>
427                                         <anyAttribute namespace="##any" processContents="lax"/>
428                 </restriction>
429             </complexContent>
430                 </complexType>
431         </element>
432
433         <attributeGroup name="CredentialUseGroup">
434                 <attribute name="TLS" type="string" use="required"/>
435                 <attribute name="Signing" type="string" use="required"/>
436                 <attribute name="signRequest" type="boolean" use="optional" default="false"/>
437                 <attribute name="signedResponse" type="boolean" use="optional" default="false"/>
438                 <attribute name="signedAssertions" type="boolean" use="optional" default="false"/>
439         </attributeGroup>
440
441         <element name="CredentialUse">
442                 <annotation>
443                         <documentation>Container for specifying credentials to use</documentation>
444                 </annotation>
445                 <complexType>
446                         <sequence>
447                                 <element name="RelyingParty" minOccurs="0" maxOccurs="unbounded">
448                                         <complexType mixed="false">
449                                                 <complexContent>
450                                                         <restriction base="anyType">
451                                                                 <attribute name="Name" type="string" use="required"/>
452                                                                 <attributeGroup ref="conf:CredentialUseGroup"/>
453                                                         </restriction>
454                                                 </complexContent>
455                                         </complexType>
456                                 </element>
457                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
458                         </sequence>
459                         <attributeGroup ref="conf:CredentialUseGroup"/>
460                 <anyAttribute namespace="##other" processContents="lax"/>
461                 </complexType>
462         </element>
463 </schema>
464