Added attribute caching options
[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:cred="urn:mace:shibboleth:credentials:1.0"
6         xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" 
7         elementFormDefault="qualified"
8         attributeFormDefault="unqualified"
9         blockDefault="substitution"
10         version="1.0">
11
12         <import namespace="urn:mace:shibboleth:credentials:1.0" schemaLocation="credentials.xsd"/>
13         <import namespace="urn:oasis:names:tc:SAML:1.0:assertion" schemaLocation="cs-sstc-schema-assertion-1.1.xsd"/>
14
15         <annotation>
16                 <documentation>
17         1.0 schema for XML-based configuration of Shibboleth target libraries and modules.
18         First appearing in Shibboleth 1.3 release.
19         </documentation>
20     </annotation>
21
22         <element name="ShibbolethTargetConfig">
23                 <annotation>
24                         <documentation>Outer element of configuration file</documentation>
25                 </annotation>
26                 <complexType>
27                         <sequence>
28                                 <element ref="conf:Extensions" minOccurs="0"/>
29                                 <element ref="cred:Credentials" minOccurs="0"/>
30                                 <element ref="conf:SHAR" minOccurs="0"/>
31                                 <element ref="conf:SHIRE" minOccurs="0"/>
32                                 <element ref="conf:Applications"/>
33                         </sequence>
34                         <attribute name="schemadir" type="anyURI" use="required"/>
35                         <attribute name="logger" type="anyURI" use="optional"/>
36                         <anyAttribute namespace="##any" processContents="lax"/>
37                 </complexType>
38         </element>
39
40         <element name="Extensions">
41                 <annotation>
42                         <documentation>Container for extension libraries and custom configuration</documentation>
43                 </annotation>
44                 <complexType>
45                         <sequence>
46                                 <element name="Library" minOccurs="0" maxOccurs="unbounded">
47                                         <complexType>
48                                     <complexContent>
49                                         <extension base="anyType">
50                                                 <attribute name="path" type="anyURI" use="required"/>
51                                                                 <attribute name="fatal" type="boolean" use="optional"/>
52                                         </extension>
53                                     </complexContent>
54                                         </complexType>
55                                 </element>
56                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
57                         </sequence>
58                 </complexType>
59         </element>
60
61         <complexType name="PluggableType">
62                 <complexContent>
63                         <extension base="anyType">
64                                 <attribute name="type" type="string" use="required"/>
65                         </extension>
66                 </complexContent>
67         </complexType>
68
69         <element name="SHAR">
70                 <annotation>
71                         <documentation>Container for SHAR configuration</documentation>
72                 </annotation>
73                 <complexType>
74                         <sequence>
75                                 <element name="Listener" type="conf:PluggableType" minOccurs="0"/>
76                                 <element name="SessionCache" minOccurs="0">
77                                         <complexType>
78                                     <complexContent>
79                                         <extension base="conf:PluggableType">
80                                                 <attribute name="cleanupInterval" type="unsignedInt" use="optional"/>
81                                                 <attribute name="timeout" type="unsignedInt" use="optional"/>
82                                         </extension>
83                                     </complexContent>
84                                         </complexType>
85                                 </element>
86                                 <element name="AttributeCache" minOccurs="0">
87                                         <complexType>
88                                     <complexContent>
89                                         <extension base="anyType">
90                                                                 <attribute name="AAConnectTimeout" type="unsignedInt" use="optional"/>
91                                                                 <attribute name="AATimeout" type="unsignedInt" use="optional"/>
92                                                                 <attribute name="defaultLifetime" type="unsignedInt" use="optional"/>
93                                                                 <attribute name="retryInterval" type="unsignedInt" use="optional"/>
94                                                                 <attribute name="strictValidity" type="boolean" use="optional"/>
95                                                                 <attribute name="propagateErrors" type="boolean" use="optional"/>
96                                         </extension>
97                                     </complexContent>
98                                         </complexType>
99                                 </element>
100                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
101                         </sequence>
102                         <attribute name="logger" type="anyURI" use="optional"/>
103                         <anyAttribute namespace="##any" processContents="lax"/>
104                 </complexType>
105         </element>
106
107         <element name="SHIRE">
108                 <annotation>
109                         <documentation>
110                         Container for configuration glue between target library and the surrounding application environment.
111                         </documentation>
112                 </annotation>
113                 <complexType>
114                         <sequence>
115                                 <element ref="conf:ApplicationMap" minOccurs="0"/>
116                                 <element name="ImplementationSpecific" minOccurs="0">
117                                         <complexType>
118                                                 <choice maxOccurs="unbounded">
119                                                         <element ref="conf:ISAPI"/>
120                                                         <element ref="conf:NSAPI"/>
121                                                         <element ref="conf:Apache"/>
122                                                         <element ref="conf:Java"/>
123                                                         <any namespace="##other" processContents="lax"/>
124                                                 </choice>
125                                         </complexType>
126                                 </element>
127                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
128                         </sequence>
129                         <attribute name="logger" type="anyURI" use="optional"/>
130                         <anyAttribute namespace="##any" processContents="lax"/>
131                 </complexType>
132         </element>
133         
134         <element name="ISAPI">
135                 <complexType>
136                         <sequence>
137                                 <element name="Site" maxOccurs="unbounded">
138                                         <complexType>
139                                                 <simpleContent>
140                                                         <extension base="string">
141                                                                 <attribute name="InstanceID" type="unsignedInt" use="required"/>
142                                                                 <anyAttribute namespace="##any" processContents="lax"/>
143                                                         </extension>
144                                                 </simpleContent>
145                                         </complexType>
146                                 </element>
147                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
148                         </sequence>
149                         <anyAttribute namespace="##any" processContents="lax"/>
150                 </complexType>
151         </element>
152         <element name="Apache">
153                 <complexType>
154             <complexContent>
155                 <extension base="anyType">
156                                         <attribute name="apacheConfig" type="boolean" use="optional"/>
157                 </extension>
158             </complexContent>
159                 </complexType>
160         </element>
161         <element name="NSAPI" type="anyType"/>
162         <element name="Java" type="anyType"/>
163         
164         <group name="ContentSettings">
165                 <annotation>
166                         <documentation>
167                         Group of settings that can be applied to elements in the ApplicationMap, supersedes httpd.conf/htaccess
168                         </documentation>
169                 </annotation>
170                 <sequence>
171                         <element name="requireSession" type="boolean" minOccurs="0"/>
172                         <element name="exportAssertion" type="boolean" minOccurs="0"/>
173                         <choice minOccurs="0">
174                                 <element name="htaccess">
175                                         <complexType>
176                                                 <choice>
177                                                         <element name="OR" type="conf:OperatorType"/>
178                                                         <element name="AND" type="conf:OperatorType"/>
179                                                         <element name="NOT">
180                                                                 <complexType>
181                                                                         <complexContent>
182                                                                                 <restriction base="conf:OperatorType">
183                                                                                         <sequence>
184                                                                                                 <element ref="conf:Rule"/>
185                                                                                         </sequence>
186                                                                                 </restriction>
187                                                                         </complexContent>
188                                                                 </complexType>
189                                                         </element>
190                                                         <element ref="conf:Rule"/>
191                                                 </choice>
192                                                 <anyAttribute namespace="##any" processContents="lax"/>
193                                         </complexType>
194                                 </element>
195                                 <element name="accessPolicy" type="conf:PluggableType"/>
196                         </choice>
197                         <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
198                 </sequence>
199         </group>
200         
201         <element name="Rule">
202                 <complexType>
203                         <simpleContent>
204                                 <extension base="string">
205                                         <attribute name="requires" type="string" use="required"/>
206                                 </extension>
207                         </simpleContent>
208                 </complexType>
209         </element>
210         <complexType name="OperatorType">
211                 <sequence>
212                         <element ref="conf:Rule" maxOccurs="unbounded"/>
213                 </sequence>
214         </complexType>
215
216     <element name="ApplicationMap">
217         <complexType>
218             <sequence>
219                 <group ref="conf:ContentSettings"/>
220                 <element ref="conf:Host" minOccurs="0" maxOccurs="unbounded"/>
221             </sequence>
222             <attribute name="uri" type="anyURI" use="optional"/>
223             <anyAttribute namespace="##any" processContents="lax"/>
224         </complexType>
225     </element>
226
227     <element name="Host">
228         <complexType>
229                 <sequence>
230                 <group ref="conf:ContentSettings"/>
231                         <element ref="conf:Path" minOccurs="0" maxOccurs="unbounded"/>
232                 </sequence>
233                 <attribute name="scheme" use="optional" default="http">
234                             <simpleType>
235                                 <restriction base="string">
236                                     <enumeration value="http"/>
237                                     <enumeration value="https"/>
238                                     <enumeration value="ftp"/>
239                                     <enumeration value="ldap"/>
240                                     <enumeration value="ldaps"/>
241                                 </restriction>
242                             </simpleType>
243                 </attribute>
244                 <attribute name="name" type="string" use="required"/>
245                 <attribute name="port" type="unsignedInt" use="optional"/>
246                 <attribute name="applicationId" type="string" use="optional"/>
247             <anyAttribute namespace="##any" processContents="lax"/>
248         </complexType>
249     </element>
250
251     <element name="Path">
252         <complexType>
253                 <sequence>
254                 <group ref="conf:ContentSettings"/>
255                         <element ref="conf:Path" minOccurs="0" maxOccurs="unbounded"/>
256                 </sequence>
257                 <attribute name="name" type="string" use="required"/>
258                 <attribute name="applicationId" type="string" use="optional"/>
259             <anyAttribute namespace="##any" processContents="lax"/>
260         </complexType>
261     </element>
262
263         <element name="Applications">
264                 <annotation>
265                         <documentation>
266                         Container for global target settings and application-specific overrides
267                         </documentation>
268                 </annotation>
269                 <complexType>
270                         <sequence>
271                                 <element ref="conf:Sessions"/>
272                                 <element ref="conf:Errors"/>
273                                 <element ref="conf:Policy"/>
274                                 <element ref="conf:CredentialUse"/>
275                                 <element ref="conf:Application" minOccurs="0" maxOccurs="unbounded"/>
276                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
277                         </sequence>
278                         <attribute name="providerId" type="anyURI" use="required"/>
279                 <anyAttribute namespace="##any" processContents="lax"/>
280                 </complexType>
281         </element>
282         
283         <element name="Application">
284                 <annotation>
285                         <documentation>
286                         Container for application-specific overrides
287                         </documentation>
288                 </annotation>
289                 <complexType>
290                         <sequence>
291                                 <element ref="conf:Sessions"/>
292                                 <element ref="conf:Errors" minOccurs="0"/>
293                                 <element ref="conf:Policy" minOccurs="0"/>
294                                 <element ref="conf:CredentialUse" minOccurs="0"/>
295                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
296                         </sequence>
297                         <attribute name="id" type="string" use="required"/>
298                         <attribute name="providerId" type="anyURI" use="optional"/>
299                 <anyAttribute namespace="##any" processContents="lax"/>
300                 </complexType>
301         </element>
302
303         <element name="Errors">
304                 <annotation>
305                         <documentation>
306                         Container for error templates and associated details
307                         </documentation>
308                 </annotation>
309                 <complexType>
310             <complexContent>
311                 <extension base="anyType">
312                         <attribute name="shire" type="anyURI" use="required"/>
313                         <attribute name="rm" type="anyURI" use="required"/>
314                         <attribute name="access" type="anyURI" use="required"/>
315                         <attribute name="supportContact" type="string" use="required"/>
316                         <attribute name="logoLocation" type="anyURI" use="required"/>
317                 </extension>
318             </complexContent>
319                 </complexType>
320         </element>
321
322         <element name="Sessions">
323                 <annotation>
324                         <documentation>
325                         Container for specifying app session establishment and policy
326                         </documentation>
327                 </annotation>
328                 <complexType>
329                         <sequence>
330                                 <element name="shireURL">
331                                         <complexType>
332                                                 <simpleContent>
333                                                         <extension base="anyURI">
334                                                                 <attribute name="SSLOnly" type="boolean" use="optional"/>
335                                                         </extension>
336                                                 </simpleContent>
337                                         </complexType>
338                                 </element>
339                                 <element name="cookieName">
340                                         <complexType>
341                                                 <simpleContent>
342                                                         <extension base="string">
343                                                                 <attribute name="SSLOnly" type="boolean" use="optional"/>
344                                                         </extension>
345                                                 </simpleContent>
346                                         </complexType>
347                                 </element>
348                                 <element name="wayfURL" type="anyURI" minOccurs="0"/>
349                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
350                         </sequence>
351                         <attribute name="lifetime" type="unsignedInt" use="optional"/>
352                         <attribute name="timeout" type="unsignedInt" use="optional"/>
353                         <attribute name="normalizeRequest" type="boolean" use="optional"/>
354                         <attribute name="checkAddress" type="boolean" use="optional"/>
355                 <anyAttribute namespace="##any" processContents="lax"/>
356                 </complexType>
357         </element>
358
359         <element name="Policy">
360                 <annotation>
361                         <documentation>
362                         Container for specifying various policies for attributes, trust, and federations
363                         </documentation>
364                 </annotation>
365                 <complexType>
366                         <sequence>
367                                 <element name="Attributes" minOccurs="0">
368                                         <complexType>
369                                                 <sequence>
370                                                         <element ref="saml:AttributeDesignator" minOccurs="0" maxOccurs="unbounded"/>
371                                                         <element name="AAPProvider" type="conf:PluggableType" minOccurs="0" maxOccurs="unbounded"/>
372                                                 </sequence>
373                                                 <attribute name="signRequest" type="boolean" use="optional"/>
374                                                 <attribute name="signedResponse" type="boolean" use="optional"/>
375                                                 <anyAttribute namespace="##any" processContents="lax"/>
376                                         </complexType>
377                                 </element>
378                                 <element name="FederationProvider" type="conf:PluggableType" minOccurs="0" maxOccurs="unbounded"/>
379                                 <element name="TrustProvider" type="conf:PluggableType" minOccurs="0" maxOccurs="unbounded"/>
380                                 <element name="Audiences" minOccurs="0">
381                                         <complexType>
382                                                 <sequence>
383                                                         <element ref="saml:Audience" maxOccurs="unbounded"/>
384                                                 </sequence>
385                                                 <anyAttribute namespace="##any" processContents="lax"/>
386                                         </complexType>
387                                 </element>
388                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
389                         </sequence>
390                 <anyAttribute namespace="##any" processContents="lax"/>
391                 </complexType>
392         </element>
393         
394         <element name="CredentialUse">
395                 <annotation>
396                         <documentation>
397                         Container for specifying credentials to use
398                         </documentation>
399                 </annotation>
400                 <complexType>
401                         <sequence>
402                                 <element name="RelyingParty" minOccurs="0" maxOccurs="unbounded">
403                                         <complexType>
404                                                 <complexContent>
405                                                         <extension base="anyType">
406                                                                 <attribute name="Name" type="string" use="required"/>
407                                                                 <attribute name="TLS" type="string" use="required"/>
408                                                                 <attribute name="Signing" type="string" use="required"/>
409                                                         </extension>
410                                                 </complexContent>
411                                         </complexType>
412                                 </element>
413                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
414                         </sequence>
415                         <attribute name="TLS" type="string" use="required"/>
416                         <attribute name="Signing" type="string" use="required"/>
417                 <anyAttribute namespace="##any" processContents="lax"/>
418                 </complexType>
419         </element>
420 </schema>
421