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