Fix catalog usage, checked in resolver schema.
[shibboleth/sp.git] / schemas / shibboleth-2.0-attribute-resolver.xsd
1 <schema targetNamespace="urn:mace:shibboleth:2.0:resolver" xmlns="http://www.w3.org/2001/XMLSchema"
2     xmlns:resolver="urn:mace:shibboleth:2.0:resolver">
3
4     <annotation>
5         <documentation>Shibboleth 2.0 Attribute Resolver configuration schema</documentation>
6     </annotation>
7
8     <element name="AttributeResolver" type="resolver:AttributeResolverType">
9         <annotation>
10             <documentation>Root of the attribute resolver configuration file.</documentation>
11         </annotation>
12         <keyref name="AttributeDefinitionAttributeDefinitionDependencyRef"
13             refer="resolver:AttributeDefinitionDependencyKey">
14             <selector xpath="./resolver:AttributeDefinition/resolver:AttributeDefinitionDependency" />
15             <field xpath="@ref" />
16         </keyref>
17         <keyref name="DataConnectorAttributeDefinitionDependencyRef"
18             refer="resolver:AttributeDefinitionDependencyKey">
19             <selector xpath="./resolver:DataConnector/resolver:AttributeDefinitionDependency" />
20             <field xpath="@ref" />
21         </keyref>
22         <keyref name="PrincipalConnectorAttributeDefinitionDependencyRef"
23             refer="resolver:AttributeDefinitionDependencyKey">
24             <selector xpath="./resolver:PrincipalConnector/resolver:AttributeDefinitionDependency" />
25             <field xpath="@ref" />
26         </keyref>
27         <key name="AttributeDefinitionDependencyKey">
28             <selector xpath="./resolver:AttributeDefinition" />
29             <field xpath="@id" />
30         </key>
31
32         <keyref name="AttributeDefinitionDataConnectorDependencyRef" refer="resolver:DataConnectorDependencyKey">
33             <selector xpath="./resolver:AttributeDefinition/resolver:DataConnectorDependency" />
34             <field xpath="@ref" />
35         </keyref>
36         <keyref name="DataConnectorDataConnectorDependencyRef" refer="resolver:DataConnectorDependencyKey">
37             <selector xpath="./resolver:DataConnector/resolver:DataConnectorDependency" />
38             <field xpath="@ref" />
39         </keyref>
40         <keyref name="FailoverDataConnectorDataConnectorDependencyRef" refer="resolver:DataConnectorDependencyKey">
41             <selector xpath="./resolver:DataConnector/resolver:FailoverDataConnector" />
42             <field xpath="@ref" />
43         </keyref>
44         <keyref name="PrincipalConnectorDataConnectorDependencyRef" refer="resolver:DataConnectorDependencyKey">
45             <selector xpath="./resolver:PrincipalConnector/resolver:DataConnectorDependency" />
46             <field xpath="@ref" />
47         </keyref>
48         <key name="DataConnectorDependencyKey">
49             <selector xpath="./resolver:DataConnector" />
50             <field xpath="@id" />
51         </key>
52     </element>
53     <complexType name="AttributeResolverType">
54         <choice minOccurs="0" maxOccurs="unbounded">
55             <element ref="resolver:AttributeDefinition" />
56             <element ref="resolver:DataConnector" />
57             <element ref="resolver:PrincipalConnector" />
58         </choice>
59     </complexType>
60
61     <element name="AttributeDefinition" type="resolver:BaseAttributeDefinitionType">
62         <annotation>
63             <documentation>Defines an attribute definition within this resolver.</documentation>
64         </annotation>
65     </element>
66     <complexType name="BaseAttributeDefinitionType">
67         <annotation>
68             <documentation>
69                 Attribute definition define the finished attributes to be released by the resolver.
70             </documentation>
71         </annotation>
72         <complexContent>
73             <extension base="resolver:BaseResolutionPlugInType">
74                 <sequence>
75                     <element ref="resolver:AttributeEncoder" minOccurs="0" maxOccurs="unbounded" />
76                 </sequence>
77                 <attribute name="dependencyOnly" type="boolean" default="false">
78                     <annotation>
79                         <documentation>
80                             A boolean flag that indicates whether this attribute definition is only defined becaue its
81                             data is needed elsewhere within the resolver and as such should not be released outside the
82                             resolver.
83                         </documentation>
84                     </annotation>
85                 </attribute>
86             </extension>
87         </complexContent>
88     </complexType>
89
90     <element name="AttributeEncoder" type="resolver:BaseAttributeEncoderType">
91         <annotation>
92             <documentation>Defines an encoder for an attribute.</documentation>
93         </annotation>
94     </element>
95     <complexType name="BaseAttributeEncoderType">
96         <annotation>
97             <documentation>
98                 An attribute encoder is responsible for converting an attribute, and it's values, into a protocol
99                 specific representation such as a SAML 1 Attribute or a SAML 2 NameID.
100             </documentation>
101         </annotation>
102     </complexType>
103
104     <element name="DataConnector" type="resolver:BaseDataConnectorType">
105         <annotation>
106             <documentation>
107                 Defines a data connector which is used to pull information from local infrastructure.
108             </documentation>
109         </annotation>
110     </element>
111     <complexType name="BaseDataConnectorType">
112         <annotation>
113             <documentation>
114                 Data connectors pull information from local infrastructure, such as databases and LDAP directories, and
115                 make these raw attributes available to attribute definitions for finishing.
116             </documentation>
117         </annotation>
118         <complexContent>
119             <extension base="resolver:BaseResolutionPlugInType">
120                 <sequence>
121                     <element ref="resolver:FailoverDataConnector" minOccurs="0" maxOccurs="unbounded" />
122                 </sequence>
123             </extension>
124         </complexContent>
125     </complexType>
126
127     <element name="PrincipalConnector" type="resolver:BasePrincipalConnectorType">
128         <annotation>
129             <documentation>
130                 Principal connectors convert a subject's NameID into an internal principal name for use within attribute
131                 definitions and data connectors.
132             </documentation>
133         </annotation>
134     </element>
135     <complexType name="BasePrincipalConnectorType">
136         <annotation>
137             <documentation>
138                 Principal connectors convert a subject's NameID into an internal principal name for use within attribute
139                 definitions and data connectors.
140             </documentation>
141         </annotation>
142         <complexContent>
143             <extension base="resolver:BaseResolutionPlugInType">
144                 <sequence>
145                     <element name="RelyingParty" type="string" minOccurs="0" maxOccurs="unbounded">
146                         <annotation>
147                             <documentation>The relying party for which this connector is valid.</documentation>
148                         </annotation>
149                     </element>
150                 </sequence>
151                 <attribute name="nameIDFormat" type="anyURI" use="required">
152                     <annotation>
153                         <documentation>The format of the NameID for which this connector is valid.</documentation>
154                     </annotation>
155                 </attribute>
156             </extension>
157         </complexContent>
158     </complexType>
159
160     <complexType name="BaseResolutionPlugInType" abstract="true">
161         <annotation>
162             <documentation>
163                 A base type for all attribute resolver plugins: data and principal connectors and attribute definitions
164             </documentation>
165         </annotation>
166         <choice minOccurs="0" maxOccurs="unbounded">
167             <element ref="resolver:AttributeDefinitionDependency" minOccurs="0" maxOccurs="unbounded" />
168             <element ref="resolver:DataConnectorDependency" minOccurs="0" maxOccurs="unbounded" />
169         </choice>
170         <attribute name="id" type="string" use="required">
171             <annotation>
172                 <documentation>A unique identifier for this definition.</documentation>
173             </annotation>
174         </attribute>
175         <attribute name="propagateErrors" type="boolean" default="true">
176             <annotation>
177                 <documentation>
178                     A boolean flag indiciating whether errors within a definition should be propogated outside the
179                     resolver. Errors exposed outside the resolver will likely result in an error being returned to the
180                     relying party.
181                 </documentation>
182             </annotation>
183         </attribute>
184     </complexType>
185
186     <element name="AttributeDefinitionDependency" type="resolver:PluginDependencyType">
187         <annotation>
188             <documentation>Defines a dependency on a specific attribute definition.</documentation>
189         </annotation>
190     </element>
191     <element name="DataConnectorDependency" type="resolver:PluginDependencyType">
192         <annotation>
193             <documentation>Defines a dependency on a specific data connector.</documentation>
194         </annotation>
195     </element>
196     <element name="FailoverDataConnector" type="resolver:PluginDependencyType">
197         <annotation>
198             <documentation>Defines a data connector to use should the parent data connector fail.</documentation>
199         </annotation>
200     </element>
201     <complexType name="PluginDependencyType">
202         <annotation>
203             <documentation>A type that represents a reference to another plugin</documentation>
204         </annotation>
205         <attribute name="ref" type="string" use="required" />
206     </complexType>
207
208 </schema>