Added default attribute lifetime.
[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                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
87                         </sequence>
88                         <attribute name="logger" type="anyURI" use="optional"/>
89                         <attribute name="AATimeout" type="unsignedInt" use="optional"/>
90                         <attribute name="AAConnectTimeout" type="unsignedInt" use="optional"/>
91                         <attribute name="defaultLifetime" type="unsignedInt" use="optional"/>
92                         <anyAttribute namespace="##any" processContents="lax"/>
93                 </complexType>
94         </element>
95
96         <element name="SHIRE">
97                 <annotation>
98                         <documentation>
99                         Container for configuration glue between target library and the surrounding application environment.
100                         </documentation>
101                 </annotation>
102                 <complexType>
103                         <sequence>
104                                 <element ref="conf:ApplicationMap" minOccurs="0"/>
105                                 <element name="ImplementationSpecific" minOccurs="0">
106                                         <complexType>
107                                                 <choice maxOccurs="unbounded">
108                                                         <element ref="conf:ISAPI"/>
109                                                         <element ref="conf:NSAPI"/>
110                                                         <element ref="conf:Apache"/>
111                                                         <element ref="conf:Java"/>
112                                                         <any namespace="##other" processContents="lax"/>
113                                                 </choice>
114                                         </complexType>
115                                 </element>
116                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
117                         </sequence>
118                         <attribute name="logger" type="anyURI" use="optional"/>
119                         <anyAttribute namespace="##any" processContents="lax"/>
120                 </complexType>
121         </element>
122         
123         <element name="ISAPI">
124                 <complexType>
125                         <sequence>
126                                 <element name="Site" maxOccurs="unbounded">
127                                         <complexType>
128                                                 <simpleContent>
129                                                         <extension base="string">
130                                                                 <attribute name="InstanceID" type="unsignedInt" use="required"/>
131                                                                 <anyAttribute namespace="##any" processContents="lax"/>
132                                                         </extension>
133                                                 </simpleContent>
134                                         </complexType>
135                                 </element>
136                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
137                         </sequence>
138                         <anyAttribute namespace="##any" processContents="lax"/>
139                 </complexType>
140         </element>
141         <element name="Apache">
142                 <complexType>
143             <complexContent>
144                 <extension base="anyType">
145                                         <attribute name="apacheConfig" type="boolean" use="optional"/>
146                 </extension>
147             </complexContent>
148                 </complexType>
149         </element>
150         <element name="NSAPI" type="anyType"/>
151         <element name="Java" type="anyType"/>
152         
153         <group name="ContentSettings">
154                 <annotation>
155                         <documentation>
156                         Group of settings that can be applied to elements in the ApplicationMap, supersedes httpd.conf/htaccess
157                         </documentation>
158                 </annotation>
159                 <sequence>
160                         <element name="requireSession" type="boolean" minOccurs="0"/>
161                         <element name="exportAssertion" type="boolean" minOccurs="0"/>
162                         <choice minOccurs="0">
163                                 <element name="htaccess">
164                                         <complexType>
165                                                 <choice>
166                                                         <element name="OR" type="conf:OperatorType"/>
167                                                         <element name="AND" type="conf:OperatorType"/>
168                                                         <element name="NOT">
169                                                                 <complexType>
170                                                                         <complexContent>
171                                                                                 <restriction base="conf:OperatorType">
172                                                                                         <sequence>
173                                                                                                 <element ref="conf:Rule"/>
174                                                                                         </sequence>
175                                                                                 </restriction>
176                                                                         </complexContent>
177                                                                 </complexType>
178                                                         </element>
179                                                         <element ref="conf:Rule"/>
180                                                 </choice>
181                                                 <anyAttribute namespace="##any" processContents="lax"/>
182                                         </complexType>
183                                 </element>
184                                 <element name="accessPolicy" type="conf:PluggableType"/>
185                         </choice>
186                         <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
187                 </sequence>
188         </group>
189         
190         <element name="Rule">
191                 <complexType>
192                         <simpleContent>
193                                 <extension base="string">
194                                         <attribute name="requires" type="string" use="required"/>
195                                 </extension>
196                         </simpleContent>
197                 </complexType>
198         </element>
199         <complexType name="OperatorType">
200                 <sequence>
201                         <element ref="conf:Rule" maxOccurs="unbounded"/>
202                 </sequence>
203         </complexType>
204
205     <element name="ApplicationMap">
206         <complexType>
207             <sequence>
208                 <group ref="conf:ContentSettings"/>
209                 <element ref="conf:Host" minOccurs="0" maxOccurs="unbounded"/>
210             </sequence>
211             <attribute name="uri" type="anyURI" use="optional"/>
212             <anyAttribute namespace="##any" processContents="lax"/>
213         </complexType>
214     </element>
215
216     <element name="Host">
217         <complexType>
218                 <sequence>
219                 <group ref="conf:ContentSettings"/>
220                         <element ref="conf:Path" minOccurs="0" maxOccurs="unbounded"/>
221                 </sequence>
222                 <attribute name="scheme" use="optional" default="http">
223                             <simpleType>
224                                 <restriction base="string">
225                                     <enumeration value="http"/>
226                                     <enumeration value="https"/>
227                                     <enumeration value="ftp"/>
228                                     <enumeration value="ldap"/>
229                                     <enumeration value="ldaps"/>
230                                 </restriction>
231                             </simpleType>
232                 </attribute>
233                 <attribute name="name" type="string" use="required"/>
234                 <attribute name="port" type="unsignedInt" use="optional"/>
235                 <attribute name="applicationId" type="string" use="optional"/>
236             <anyAttribute namespace="##any" processContents="lax"/>
237         </complexType>
238     </element>
239
240     <element name="Path">
241         <complexType>
242                 <sequence>
243                 <group ref="conf:ContentSettings"/>
244                         <element ref="conf:Path" minOccurs="0" maxOccurs="unbounded"/>
245                 </sequence>
246                 <attribute name="name" type="string" use="required"/>
247                 <attribute name="applicationId" type="string" use="optional"/>
248             <anyAttribute namespace="##any" processContents="lax"/>
249         </complexType>
250     </element>
251
252         <element name="Applications">
253                 <annotation>
254                         <documentation>
255                         Container for global target settings and application-specific overrides
256                         </documentation>
257                 </annotation>
258                 <complexType>
259                         <sequence>
260                                 <element ref="conf:Sessions"/>
261                                 <element ref="conf:Errors"/>
262                                 <element ref="conf:Policy"/>
263                                 <element ref="conf:CredentialUse"/>
264                                 <element ref="conf:Application" minOccurs="0" maxOccurs="unbounded"/>
265                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
266                         </sequence>
267                         <attribute name="providerId" type="anyURI" use="required"/>
268                 <anyAttribute namespace="##any" processContents="lax"/>
269                 </complexType>
270         </element>
271         
272         <element name="Application">
273                 <annotation>
274                         <documentation>
275                         Container for application-specific overrides
276                         </documentation>
277                 </annotation>
278                 <complexType>
279                         <sequence>
280                                 <element ref="conf:Sessions"/>
281                                 <element ref="conf:Errors" minOccurs="0"/>
282                                 <element ref="conf:Policy" minOccurs="0"/>
283                                 <element ref="conf:CredentialUse" minOccurs="0"/>
284                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
285                         </sequence>
286                         <attribute name="id" type="string" use="required"/>
287                         <attribute name="providerId" type="anyURI" use="optional"/>
288                 <anyAttribute namespace="##any" processContents="lax"/>
289                 </complexType>
290         </element>
291
292         <element name="Errors">
293                 <annotation>
294                         <documentation>
295                         Container for error templates and associated details
296                         </documentation>
297                 </annotation>
298                 <complexType>
299             <complexContent>
300                 <extension base="anyType">
301                         <attribute name="shire" type="anyURI" use="required"/>
302                         <attribute name="rm" type="anyURI" use="required"/>
303                         <attribute name="access" type="anyURI" use="required"/>
304                         <attribute name="supportContact" type="string" use="required"/>
305                         <attribute name="logoLocation" type="anyURI" use="required"/>
306                 </extension>
307             </complexContent>
308                 </complexType>
309         </element>
310
311         <element name="Sessions">
312                 <annotation>
313                         <documentation>
314                         Container for specifying app session establishment and policy
315                         </documentation>
316                 </annotation>
317                 <complexType>
318                         <sequence>
319                                 <element name="shireURL">
320                                         <complexType>
321                                                 <simpleContent>
322                                                         <extension base="anyURI">
323                                                                 <attribute name="SSLOnly" type="boolean" use="optional"/>
324                                                         </extension>
325                                                 </simpleContent>
326                                         </complexType>
327                                 </element>
328                                 <element name="cookieName">
329                                         <complexType>
330                                                 <simpleContent>
331                                                         <extension base="string">
332                                                                 <attribute name="SSLOnly" type="boolean" use="optional"/>
333                                                         </extension>
334                                                 </simpleContent>
335                                         </complexType>
336                                 </element>
337                                 <element name="wayfURL" type="anyURI" minOccurs="0"/>
338                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
339                         </sequence>
340                         <attribute name="lifetime" type="unsignedInt" use="optional"/>
341                         <attribute name="timeout" type="unsignedInt" use="optional"/>
342                         <attribute name="normalizeRequest" type="boolean" use="optional"/>
343                         <attribute name="checkAddress" type="boolean" use="optional"/>
344                 <anyAttribute namespace="##any" processContents="lax"/>
345                 </complexType>
346         </element>
347
348         <element name="Policy">
349                 <annotation>
350                         <documentation>
351                         Container for specifying various policies for attributes, trust, and federations
352                         </documentation>
353                 </annotation>
354                 <complexType>
355                         <sequence>
356                                 <element name="Attributes" minOccurs="0">
357                                         <complexType>
358                                                 <sequence>
359                                                         <element ref="saml:AttributeDesignator" minOccurs="0" maxOccurs="unbounded"/>
360                                                         <element name="AAPProvider" type="conf:PluggableType" minOccurs="0" maxOccurs="unbounded"/>
361                                                 </sequence>
362                                                 <attribute name="signRequest" type="boolean" use="optional"/>
363                                                 <attribute name="signedResponse" type="boolean" use="optional"/>
364                                                 <anyAttribute namespace="##any" processContents="lax"/>
365                                         </complexType>
366                                 </element>
367                                 <element name="FederationProvider" type="conf:PluggableType" minOccurs="0" maxOccurs="unbounded"/>
368                                 <element name="TrustProvider" type="conf:PluggableType" minOccurs="0" maxOccurs="unbounded"/>
369                                 <element name="Audiences" minOccurs="0">
370                                         <complexType>
371                                                 <sequence>
372                                                         <element ref="saml:Audience" maxOccurs="unbounded"/>
373                                                 </sequence>
374                                                 <anyAttribute namespace="##any" processContents="lax"/>
375                                         </complexType>
376                                 </element>
377                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
378                         </sequence>
379                 <anyAttribute namespace="##any" processContents="lax"/>
380                 </complexType>
381         </element>
382         
383         <element name="CredentialUse">
384                 <annotation>
385                         <documentation>
386                         Container for specifying credentials to use
387                         </documentation>
388                 </annotation>
389                 <complexType>
390                         <sequence>
391                                 <element name="RelyingParty" minOccurs="0" maxOccurs="unbounded">
392                                         <complexType>
393                                                 <complexContent>
394                                                         <extension base="anyType">
395                                                                 <attribute name="Name" type="string" use="required"/>
396                                                                 <attribute name="TLS" type="string" use="required"/>
397                                                                 <attribute name="Signing" type="string" use="required"/>
398                                                         </extension>
399                                                 </complexContent>
400                                         </complexType>
401                                 </element>
402                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
403                         </sequence>
404                         <attribute name="TLS" type="string" use="required"/>
405                         <attribute name="Signing" type="string" use="required"/>
406                 <anyAttribute namespace="##any" processContents="lax"/>
407                 </complexType>
408         </element>
409 </schema>
410