Default logger settings, make InProcess/OutOfProcess material optional.
[shibboleth/sp.git] / schemas / shibboleth-2.0-native-sp-config.xsd
1 <?xml version="1.0" encoding="US-ASCII"?>
2 <schema targetNamespace="urn:mace:shibboleth:2.0:native:sp:config"
3         xmlns="http://www.w3.org/2001/XMLSchema"
4         xmlns:conf="urn:mace:shibboleth:2.0:native:sp:config"
5     xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
6         xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
7         xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
8         xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
9         elementFormDefault="qualified"
10         attributeFormDefault="unqualified"
11         blockDefault="substitution"
12         version="2.4">
13
14   <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd" />
15   <import namespace="urn:oasis:names:tc:SAML:2.0:assertion" schemaLocation="saml-schema-assertion-2.0.xsd"/>
16   <import namespace="urn:oasis:names:tc:SAML:2.0:protocol" schemaLocation="saml-schema-protocol-2.0.xsd"/>
17   <import namespace="urn:oasis:names:tc:SAML:2.0:metadata" schemaLocation="saml-schema-metadata-2.0.xsd"/>
18
19   <annotation>
20     <documentation>
21       2.0 schema for XML-based configuration of Shibboleth Native SP instances.
22       First appearing in Shibboleth 2.0 release.
23     </documentation>
24   </annotation>
25
26   <simpleType name="string">
27     <restriction base="string">
28       <minLength value="1"/>
29     </restriction>
30   </simpleType>
31
32   <simpleType name="listOfStrings">
33     <list itemType="conf:string"/>
34   </simpleType>
35
36   <simpleType name="listOfURIs">
37     <list itemType="anyURI"/>
38   </simpleType>
39
40   <simpleType name="bindingBoolean">
41     <restriction base="string">
42       <enumeration value="true"/>
43       <enumeration value="false"/>
44       <enumeration value="front"/>
45       <enumeration value="back"/>
46     </restriction>
47   </simpleType>
48
49   <complexType name="PluggableType">
50     <sequence>
51       <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
52     </sequence>
53     <attribute name="type" type="conf:string" use="required"/>
54     <anyAttribute namespace="##any" processContents="lax"/>
55   </complexType>
56
57   <complexType name="ExtensionsType">
58     <annotation>
59       <documentation>Container for extension libraries and custom configuration</documentation>
60     </annotation>
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"/>
69           <anyAttribute namespace="##any" processContents="lax"/>
70         </complexType>
71       </element>
72       <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
73     </sequence>
74   </complexType>
75
76   <complexType name="StorageServiceType">
77     <annotation>
78       <documentation>References StorageService plugins</documentation>
79     </annotation>
80     <complexContent>
81       <restriction base="conf:PluggableType">
82         <sequence>
83           <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
84         </sequence>
85         <attribute name="id" type="ID" use="required"/>
86         <attribute name="cleanupInterval" type="unsignedInt"/>
87         <anyAttribute namespace="##any" processContents="lax"/>
88       </restriction>
89     </complexContent>
90   </complexType>
91
92   <complexType name="SessionCacheType">
93     <annotation>
94       <documentation>References SessionCache plugins</documentation>
95     </annotation>
96     <complexContent>
97       <restriction base="conf:PluggableType">
98         <sequence>
99           <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
100         </sequence>
101         <attribute name="StorageService" type="IDREF"/>
102         <attribute name="cacheTimeout" type="unsignedInt"/>
103         <anyAttribute namespace="##any" processContents="lax"/>
104       </restriction>
105     </complexContent>
106   </complexType>
107
108   <complexType name="ReplayCacheType">
109     <annotation>
110       <documentation>Ties ReplayCache to a custom StorageService</documentation>
111     </annotation>
112     <sequence/>
113     <attribute name="StorageService" type="IDREF" use="required"/>
114   </complexType>
115
116   <complexType name="ArtifactMapType">
117     <annotation>
118       <documentation>Customizes an ArtifactMap</documentation>
119     </annotation>
120     <sequence/>
121     <attribute name="StorageService" type="IDREF"/>
122     <attribute name="context" type="conf:string"/>
123     <attribute name="artifactTTL" type="unsignedInt"/>
124   </complexType>
125
126   <complexType name="OutOfProcessType">
127     <annotation>
128       <documentation>Container for out-of-process (shibd) configuration</documentation>
129     </annotation>
130     <sequence>
131       <element name="Extensions" type="conf:ExtensionsType" minOccurs="0"/>
132       <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
133     </sequence>
134     <attribute name="logger" type="anyURI"/>
135     <attribute name="catchAll" type="boolean"/>
136     <anyAttribute namespace="##other" processContents="lax"/>
137   </complexType>
138
139   <complexType name="InProcessType">
140     <annotation>
141       <documentation>
142         Container for configuration of locally integrated or platform-specific
143         features (e.g. web server filters)
144       </documentation>
145     </annotation>
146     <sequence>
147       <element name="Extensions" type="conf:ExtensionsType" minOccurs="0"/>
148       <element name="ISAPI" minOccurs="0">
149         <complexType>
150           <sequence>
151             <element name="Site" maxOccurs="unbounded">
152               <complexType>
153                 <sequence>
154                   <element name="Alias" type="conf:string" minOccurs="0" maxOccurs="unbounded"/>
155                 </sequence>
156                 <attribute name="id" type="unsignedInt" use="required"/>
157                 <attribute name="name" type="conf:string" use="required"/>
158                 <attribute name="port" type="unsignedInt"/>
159                 <attribute name="sslport" type="unsignedInt"/>
160                 <attribute name="scheme" type="conf:string"/>
161               </complexType>
162             </element>
163             <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
164           </sequence>
165           <attribute name="normalizeRequest" type="boolean"/>
166           <attribute name="safeHeaderNames" type="boolean"/>
167           <anyAttribute namespace="##other" processContents="lax"/>
168         </complexType>
169       </element>
170       <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
171     </sequence>
172     <attribute name="logger" type="anyURI"/>
173     <attribute name="unsetHeaderValue" type="conf:string"/>
174     <attribute name="checkSpoofing" type="boolean"/>
175     <attribute name="spoofKey" type="conf:string"/>
176     <attribute name="catchAll" type="boolean"/>
177     <anyAttribute namespace="##other" processContents="lax"/>
178   </complexType>
179
180   <element name="AccessControl" type="conf:UniOperatorType">
181     <annotation>
182       <documentation>
183         A simple example access policy language extension that supersedes Apache .htaccess
184       </documentation>
185     </annotation>
186   </element>
187   <complexType name="UniOperatorType">
188     <choice>
189       <element name="AND" type="conf:MultiOperatorType"/>
190       <element name="OR" type="conf:MultiOperatorType"/>
191       <element name="NOT" type="conf:UniOperatorType"/>
192       <element name="Rule" type="conf:RuleType"/>
193       <element name="RuleRegex" type="conf:RuleRegexType"/>
194     </choice>
195   </complexType>
196   <complexType name="MultiOperatorType">
197     <choice minOccurs="2" maxOccurs="unbounded">
198       <element name="AND" type="conf:MultiOperatorType"/>
199       <element name="OR" type="conf:MultiOperatorType"/>
200       <element name="NOT" type="conf:UniOperatorType"/>
201       <element name="Rule" type="conf:RuleType"/>
202       <element name="RuleRegex" type="conf:RuleRegexType"/>
203     </choice>
204   </complexType>
205   <complexType name="RuleType">
206     <simpleContent>
207       <extension base="conf:listOfStrings">
208         <attribute name="require" type="conf:string" use="required"/>
209         <attribute name="list" type="boolean"/>
210       </extension>
211     </simpleContent>
212   </complexType>
213   <complexType name="RuleRegexType">
214     <simpleContent>
215       <extension base="conf:string">
216         <attribute name="require" type="conf:string" use="required"/>
217         <attribute name="ignoreCase" type="boolean"/>
218       </extension>
219     </simpleContent>
220   </complexType>
221
222   <attributeGroup name="ContentSettings">
223     <attribute name="authType" type="conf:string"/>
224     <attribute name="requireSession" type="boolean"/>
225     <attribute name="requireSessionWith" type="conf:string"/>
226     <attribute name="exportAssertion" type="boolean"/>
227     <attribute name="redirectToSSL" type="unsignedInt"/>
228     <attribute name="entityID" type="anyURI"/>
229     <attribute name="discoveryURL" type="anyURI"/>
230     <attribute name="isPassive" type="boolean"/>
231     <attribute name="returnOnError" type="boolean"/>
232     <attribute name="forceAuthn" type="boolean"/>
233     <attribute name="authnContextClassRef" type="anyURI"/>
234     <attribute name="authnContextComparison" type="samlp:AuthnContextComparisonType"/>
235     <attribute name="NameIDFormat" type="anyURI"/>
236     <attribute name="SPNameQualifier" type="conf:string"/>
237     <attribute name="redirectErrors" type="anyURI"/>
238     <attribute name="sessionError" type="anyURI"/>
239     <attribute name="metadataError" type="anyURI"/>
240     <attribute name="accessError" type="anyURI"/>
241     <attribute name="sslError" type="anyURI"/>
242     <attribute name="target" type="anyURI"/>
243     <attribute name="acsIndex" type="unsignedShort"/>
244     <attribute name="REMOTE_ADDR" type="conf:string"/>
245     <anyAttribute namespace="##other" processContents="lax"/>
246   </attributeGroup>
247
248   <element name="RequestMap">
249     <annotation>
250       <documentation>
251         Built-in request mapping syntax, decomposes URLs into Host/Path/Path/...
252       </documentation>
253     </annotation>
254     <complexType>
255       <sequence>
256         <choice minOccurs="0">
257           <element name="htaccess" type="conf:PluggableType"/>
258           <element ref="conf:AccessControl"/>
259           <element name="AccessControlProvider" type="conf:PluggableType"/>
260         </choice>
261         <choice minOccurs="0" maxOccurs="unbounded">
262           <element name="Host" type="conf:HostType"/>
263           <element name="HostRegex" type="conf:HostRegexType"/>
264         </choice>
265         <element ref="ds:Signature" minOccurs="0"/>
266       </sequence>
267       <attribute name="applicationId" type="conf:string" fixed="default"/>
268       <attributeGroup ref="conf:ContentSettings"/>
269     </complexType>
270   </element>
271
272   <complexType name="HostType">
273     <sequence>
274       <choice minOccurs="0">
275         <element name="htaccess" type="conf:PluggableType"/>
276         <element ref="conf:AccessControl"/>
277         <element name="AccessControlProvider" type="conf:PluggableType"/>
278       </choice>
279       <choice minOccurs="0" maxOccurs="unbounded">
280         <element name="Path" type="conf:PathType"/>
281         <element name="PathRegex" type="conf:PathRegexType"/>
282         <element name="Query" type="conf:QueryType"/>
283       </choice>
284     </sequence>
285     <attribute name="scheme">
286       <simpleType>
287         <restriction base="conf:string">
288           <enumeration value="http"/>
289           <enumeration value="https"/>
290           <enumeration value="ftp"/>
291           <enumeration value="ldap"/>
292           <enumeration value="ldaps"/>
293         </restriction>
294       </simpleType>
295     </attribute>
296     <attribute name="name" type="conf:string" use="required"/>
297     <attribute name="port" type="unsignedInt"/>
298     <attribute name="applicationId" type="conf:string"/>
299     <attributeGroup ref="conf:ContentSettings"/>
300   </complexType>
301
302   <complexType name="HostRegexType">
303     <sequence>
304       <choice minOccurs="0">
305         <element name="htaccess" type="conf:PluggableType"/>
306         <element ref="conf:AccessControl"/>
307         <element name="AccessControlProvider" type="conf:PluggableType"/>
308       </choice>
309       <choice minOccurs="0" maxOccurs="unbounded">
310         <element name="Path" type="conf:PathType"/>
311         <element name="PathRegex" type="conf:PathRegexType"/>
312         <element name="Query" type="conf:QueryType"/>
313       </choice>
314     </sequence>
315     <attribute name="regex" type="conf:string" use="required"/>
316     <attribute name="ignoreCase" type="boolean"/>
317     <attribute name="applicationId" type="conf:string"/>
318     <attributeGroup ref="conf:ContentSettings"/>
319   </complexType>
320
321   <complexType name="PathType">
322     <sequence>
323       <choice minOccurs="0">
324         <element name="htaccess" type="conf:PluggableType"/>
325         <element ref="conf:AccessControl"/>
326         <element name="AccessControlProvider" type="conf:PluggableType"/>
327       </choice>
328       <choice minOccurs="0" maxOccurs="unbounded">
329         <element name="Path" type="conf:PathType"/>
330         <element name="PathRegex" type="conf:PathRegexType"/>
331         <element name="Query" type="conf:QueryType"/>
332       </choice>
333     </sequence>
334     <attribute name="name" type="conf:string" use="required"/>
335     <attribute name="applicationId" type="conf:string"/>
336     <attributeGroup ref="conf:ContentSettings"/>
337   </complexType>
338
339   <complexType name="PathRegexType">
340     <sequence>
341       <choice minOccurs="0">
342         <element name="htaccess" type="conf:PluggableType"/>
343         <element ref="conf:AccessControl"/>
344         <element name="AccessControlProvider" type="conf:PluggableType"/>
345       </choice>
346       <element name="Query" type="conf:QueryType" minOccurs="0" maxOccurs="unbounded"/>
347     </sequence>
348     <attribute name="regex" type="conf:string" use="required"/>
349     <attribute name="ignoreCase" type="boolean"/>
350     <attribute name="applicationId" type="conf:string"/>
351     <attributeGroup ref="conf:ContentSettings"/>
352   </complexType>
353
354   <complexType name="QueryType">
355     <sequence>
356       <choice minOccurs="0">
357         <element name="htaccess" type="conf:PluggableType"/>
358         <element ref="conf:AccessControl"/>
359         <element name="AccessControlProvider" type="conf:PluggableType"/>
360       </choice>
361       <element name="Query" type="conf:QueryType" minOccurs="0" maxOccurs="unbounded"/>
362     </sequence>
363     <attribute name="name" type="conf:string" use="required"/>
364     <attribute name="regex" type="conf:string"/>
365     <attributeGroup ref="conf:ContentSettings"/>
366   </complexType>
367
368   <complexType name="ApplicationDefaultsType">
369     <annotation>
370       <documentation>Container for default settings and application-specific overrides</documentation>
371     </annotation>
372     <sequence>
373       <element name="Sessions" type="conf:SessionsType"/>
374       <element name="Errors" type="conf:ErrorsType" minOccurs="0"/>
375       <element name="RelyingParty" type="conf:RelyingPartyType" minOccurs="0" maxOccurs="unbounded"/>
376       <element name="Notify" type="conf:NotifyType" minOccurs="0" maxOccurs="unbounded"/>
377       <element ref="saml:Audience" minOccurs="0" maxOccurs="unbounded"/>
378       <element name="MetadataProvider" type="conf:PluggableType"/>
379       <element name="TrustEngine" type="conf:PluggableType"/>
380       <element name="AttributeExtractor" type="conf:PluggableType" minOccurs="0"/>
381       <element name="AttributeResolver" type="conf:PluggableType" minOccurs="0"/>
382       <element name="AttributeFilter" type="conf:PluggableType" minOccurs="0"/>
383       <element name="CredentialResolver" type="conf:PluggableType" minOccurs="0"/>
384       <element name="ApplicationOverride" type="conf:ApplicationOverrideType" minOccurs="0" maxOccurs="unbounded"/>
385     </sequence>
386     <attribute name="id" type="conf:string" fixed="default"/>
387     <attribute name="entityID" type="anyURI" use="required"/>
388     <attribute name="policyId" type="conf:string" use="required"/>
389     <attributeGroup ref="conf:ApplicationGroup"/>
390     <attributeGroup ref="conf:RelyingPartyGroup"/>
391     <anyAttribute namespace="##other" processContents="lax"/>
392   </complexType>
393
394   <complexType name="ApplicationOverrideType">
395     <annotation>
396       <documentation>Container for application-specific overrides</documentation>
397     </annotation>
398     <sequence>
399       <element name="Sessions" type="conf:SessionsType" minOccurs="0"/>
400       <element name="Errors" type="conf:ErrorsType" minOccurs="0"/>
401       <element name="RelyingParty" type="conf:RelyingPartyType" minOccurs="0" maxOccurs="unbounded"/>
402       <element name="Notify" type="conf:NotifyType" minOccurs="0" maxOccurs="unbounded"/>
403       <element ref="saml:Audience" minOccurs="0" maxOccurs="unbounded"/>
404       <element name="MetadataProvider" type="conf:PluggableType" minOccurs="0"/>
405       <element name="TrustEngine" type="conf:PluggableType" minOccurs="0"/>
406       <element name="AttributeExtractor" type="conf:PluggableType" minOccurs="0"/>
407       <element name="AttributeResolver" type="conf:PluggableType" minOccurs="0"/>
408       <element name="AttributeFilter" type="conf:PluggableType" minOccurs="0"/>
409       <element name="CredentialResolver" type="conf:PluggableType" minOccurs="0"/>
410     </sequence>
411     <attribute name="id" type="conf:string" use="required"/>
412     <attribute name="entityID" type="anyURI"/>
413     <attribute name="policyId" type="conf:string"/>
414     <attributeGroup ref="conf:ApplicationGroup"/>
415     <attributeGroup ref="conf:RelyingPartyGroup"/>
416     <anyAttribute namespace="##other" processContents="lax"/>
417   </complexType>
418
419   <attributeGroup name="ApplicationGroup">
420     <attribute name="homeURL" type="anyURI"/>
421     <attribute name="REMOTE_USER" type="conf:listOfStrings"/>
422     <attribute name="unsetHeaders" type="conf:listOfStrings"/>
423     <attribute name="metadataAttributePrefix" type="conf:string"/>
424     <attribute name="attributePrefix" type="conf:string"/>
425   </attributeGroup>
426
427   <attributeGroup name="RelyingPartyGroup">
428     <attribute name="authType" type="conf:string"/>
429     <attribute name="authUsername" type="conf:string"/>
430     <attribute name="authPassword" type="conf:string"/>
431     <attribute name="signing" type="conf:bindingBoolean"/>
432     <attribute name="signingAlg" type="anyURI"/>
433     <attribute name="digestAlg" type="anyURI"/>
434     <attribute name="encryption" type="conf:bindingBoolean"/>
435     <attribute name="encryptionAlg" type="anyURI"/>
436     <attribute name="keyName" type="conf:string"/>
437     <attribute name="artifactEndpointIndex" type="unsignedShort"/>
438     <attribute name="chunkedEncoding" type="boolean"/>
439     <attribute name="connectTimeout" type="unsignedShort"/>
440     <attribute name="timeout" type="unsignedShort"/>
441     <attribute name="requireConfidentiality" type="boolean"/>
442     <attribute name="requireTransportAuth" type="boolean"/>
443     <attribute name="requireSignedAssertions" type="boolean"/>
444   </attributeGroup>
445
446   <complexType name="SessionsType">
447     <annotation>
448       <documentation>Container for specifying protocol handlers and session policy</documentation>
449     </annotation>
450     <choice minOccurs="0" maxOccurs="unbounded">
451       <element ref="conf:SessionInitiator"/>
452       <element ref="conf:LogoutInitiator"/>
453       <element ref="md:AssertionConsumerService"/>
454       <element ref="md:ArtifactResolutionService"/>
455       <element ref="md:SingleLogoutService"/>
456       <element ref="md:ManageNameIDService"/>
457       <element name="Handler">
458         <complexType>
459           <complexContent>
460             <restriction base="conf:PluggableType">
461               <sequence>
462                 <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
463               </sequence>
464               <attribute name="Location" type="anyURI" use="required"/>
465               <attribute name="acl" type="conf:listOfStrings"/>
466               <anyAttribute namespace="##any" processContents="lax"/>
467             </restriction>
468           </complexContent>
469         </complexType>
470       </element>
471     </choice>
472     <attribute name="handlerURL" type="anyURI" use="required"/>
473     <attribute name="handlerSSL" type="boolean"/>
474     <attribute name="exportLocation" type="conf:string"/>
475     <attribute name="exportACL" type="conf:listOfStrings"/>
476     <attribute name="cookieName" type="conf:string"/>
477     <attribute name="cookieProps" type="conf:string"/>
478     <attribute name="cookieLifetime" type="unsignedInt"/>
479     <attribute name="idpHistory" type="boolean"/>
480     <attribute name="idpHistoryDays" type="unsignedInt"/>
481     <attribute name="lifetime" type="unsignedInt"/>
482     <attribute name="timeout" type="unsignedInt"/>
483     <attribute name="maxTimeSinceAuthn" type="unsignedInt"/>
484     <attribute name="checkAddress" type="boolean"/>
485     <attribute name="consistentAddress" type="boolean"/>
486     <attribute name="postData" type="conf:string"/>
487     <attribute name="postLimit" type="positiveInteger"/>
488     <attribute name="postTemplate" type="conf:string"/>
489     <attribute name="postExpire" type="boolean"/>
490     <anyAttribute namespace="##other" processContents="lax"/>
491   </complexType>
492
493   <attribute name="policyId" type="conf:string">
494     <annotation>
495       <documentation>Used to reference Policy elements from profile endpoints.</documentation>
496     </annotation>
497   </attribute>
498
499   <element name="SessionInitiator">
500     <annotation>
501       <documentation>Used to specify handlers that can issue AuthnRequests or perform discovery</documentation>
502     </annotation>
503     <complexType>
504       <complexContent>
505         <restriction base="conf:PluggableType">
506           <sequence>
507             <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
508           </sequence>
509           <attribute name="Location" type="anyURI"/>
510           <attribute name="id" type="conf:string"/>
511           <attribute name="isDefault" type="boolean"/>
512           <attribute name="relayState" type="conf:string"/>
513           <attribute name="entityIDParam" type="conf:string"/>
514           <attribute name="entityID" type="anyURI"/>
515           <attribute name="URL" type="anyURI"/>
516           <attribute name="outgoingBindings" type="conf:listOfURIs"/>
517           <attribute name="template" type="anyURI"/>
518           <attribute name="postArtifact" type="boolean"/>
519           <attribute name="acsByIndex" type="boolean"/>
520           <attribute name="acsIndex" type="unsignedShort"/>
521           <attribute name="defaultACSIndex" type="unsignedShort"/>  <!-- deprecated -->
522           <attribute name="isPassive" type="boolean"/>
523           <attribute name="returnOnError" type="boolean"/>
524           <attribute name="forceAuthn" type="boolean"/>
525           <attribute name="authnContextClassRef" type="anyURI"/>
526           <attribute name="authnContextComparison" type="samlp:AuthnContextComparisonType"/>
527           <attribute name="NameIDFormat" type="anyURI"/>
528           <attribute name="SPNameQualifier" type="conf:string"/>
529           <attribute name="requestDelegation" type="boolean"/>
530           <attribute name="target" type="anyURI"/>
531           <anyAttribute namespace="##any" processContents="lax"/>
532         </restriction>
533       </complexContent>
534     </complexType>
535   </element>
536
537   <element name="LogoutInitiator">
538     <annotation>
539       <documentation>Used to specify handlers that can issue LogoutRequests</documentation>
540     </annotation>
541     <complexType>
542       <complexContent>
543         <restriction base="conf:PluggableType">
544           <sequence>
545             <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
546           </sequence>
547           <attribute name="Location" type="anyURI"/>
548           <attribute name="relayState" type="conf:string"/>
549           <attribute name="outgoingBindings" type="conf:listOfURIs"/>
550           <attribute name="template" type="anyURI"/>
551           <attribute name="postArtifact" type="boolean"/>
552           <anyAttribute namespace="##any" processContents="lax"/>
553         </restriction>
554       </complexContent>
555     </complexType>
556   </element>
557
558   <complexType name="ErrorsType">
559     <annotation>
560       <documentation>Container for error templates and associated details</documentation>
561     </annotation>
562     <sequence>
563       <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
564     </sequence>
565     <attribute name="redirectErrors" type="anyURI"/>
566     <attribute name="session" type="anyURI"/>
567     <attribute name="metadata" type="anyURI"/>
568     <attribute name="access" type="anyURI"/>
569     <attribute name="ssl" type="anyURI"/>
570     <attribute name="localLogout" type="anyURI"/>
571     <attribute name="globalLogout" type="anyURI"/>
572     <attribute name="partialLogout" type="anyURI"/>
573     <attribute name="supportContact" type="conf:string"/>
574     <attribute name="logoLocation" type="anyURI"/>
575     <attribute name="styleSheet" type="anyURI"/>
576     <anyAttribute namespace="##any" processContents="lax"/>
577   </complexType>
578
579   <complexType name="RelyingPartyType">
580     <annotation>
581       <documentation>Container for specifying settings to use with particular peers</documentation>
582     </annotation>
583     <sequence/>
584     <attribute name="Name" type="conf:string" use="required"/>
585     <attributeGroup ref="conf:RelyingPartyGroup"/>
586     <attribute name="entityID" type="anyURI"/>
587     <anyAttribute namespace="##other" processContents="lax"/>
588   </complexType>
589
590   <complexType name="NotifyType">
591     <annotation>
592       <documentation>Used to specify locations to receive application notifications</documentation>
593     </annotation>
594     <sequence/>
595     <attribute name="Channel" use="required">
596       <simpleType>
597         <restriction base="string">
598           <enumeration value="front"/>
599           <enumeration value="back"/>
600         </restriction>
601       </simpleType>
602     </attribute>
603     <attribute name="Location" type="anyURI" use="required"/>
604     <anyAttribute namespace="##any" processContents="lax"/>
605   </complexType>
606
607   <element name="SecurityPolicies">
608     <complexType>
609       <annotation>
610         <documentation>Container for specifying sets of policy rules to apply to incoming messages</documentation>
611       </annotation>
612       <sequence>
613         <element name="Policy" minOccurs="1" maxOccurs="unbounded">
614           <annotation>
615             <documentation>Specifies a set of SecurityPolicyRule plugins</documentation>
616           </annotation>
617           <complexType>
618             <choice>
619               <element name="Rule" type="conf:PluggableType" minOccurs="1" maxOccurs="unbounded"/>
620               <element name="PolicyRule" type="conf:PluggableType" minOccurs="1" maxOccurs="unbounded"/>
621             </choice>
622             <attribute name="id" type="conf:string" use="required"/>
623             <attribute name="validate" type="boolean"/>
624             <anyAttribute namespace="##any" processContents="lax"/>
625           </complexType>
626         </element>
627         <choice minOccurs="0">
628           <element name="AlgorithmWhitelist" type="conf:listOfURIs"/>
629           <element name="AlgorithmBlacklist" type="conf:listOfURIs"/>
630         </choice>
631       </sequence>
632     </complexType>
633   </element>
634
635   <element name="TransportOption">
636     <annotation>
637       <documentation>Implementation-specific option to pass to SOAPTransport provider.</documentation>
638     </annotation>
639     <complexType>
640       <simpleContent>
641         <extension base="anySimpleType">
642           <attribute name="provider" type="conf:string" use="required"/>
643           <attribute name="option" type="conf:string" use="required"/>
644         </extension>
645       </simpleContent>
646     </complexType>
647   </element>
648
649   <element name="SPConfig">
650     <complexType>
651       <annotation>
652         <documentation>Root of configuration</documentation>
653       </annotation>
654       <sequence>
655         <element name="Extensions" type="conf:ExtensionsType" minOccurs="0"/>
656         <element name="OutOfProcess" type="conf:OutOfProcessType" minOccurs="0"/>
657         <element name="InProcess" type="conf:InProcessType" minOccurs="0"/>
658         <choice minOccurs="0">
659           <element name="UnixListener">
660             <complexType>
661               <attribute name="address" type="conf:string" use="required"/>
662               <attribute name="stackSize" type="unsignedInt"/>
663             </complexType>
664           </element>
665           <element name="TCPListener">
666             <complexType>
667               <attribute name="address" type="conf:string" use="required"/>
668               <attribute name="port" type="unsignedInt" use="required"/>
669               <attribute name="acl" type="conf:listOfStrings"/>
670               <attribute name="stackSize" type="unsignedInt"/>
671             </complexType>
672           </element>
673           <element name="Listener" type="conf:PluggableType"/>
674         </choice>
675         <element name="StorageService" type="conf:StorageServiceType" minOccurs="0" maxOccurs="unbounded"/>
676         <element name="SessionCache" type="conf:SessionCacheType" minOccurs="0"/>
677         <element name="ReplayCache" type="conf:ReplayCacheType" minOccurs="0"/>
678         <element name="ArtifactMap" type="conf:ArtifactMapType" minOccurs="0"/>
679         <element name="RequestMapper" type="conf:PluggableType" minOccurs="0"/>
680         <element name="ApplicationDefaults" type="conf:ApplicationDefaultsType"/>
681         <choice>
682           <element name="SecurityPolicyProvider" type="conf:PluggableType"/>
683           <element ref="conf:SecurityPolicies"/> <!-- deprecated -->
684         </choice>
685         <element ref="conf:TransportOption" minOccurs="0" maxOccurs="unbounded"/>
686         <element ref="ds:Signature" minOccurs="0"/>
687       </sequence>
688       <attribute name="logger" type="anyURI"/>
689       <attribute name="clockSkew" type="unsignedInt"/>
690       <attribute name="unsafeChars" type="conf:string"/>
691       <attribute name="allowedSchemes" type="conf:listOfStrings"/>
692       <anyAttribute namespace="##other" processContents="lax"/>
693     </complexType>
694   </element>
695
696 </schema>