source: wsdl/abac_types.xsd

Last change on this file was 1c59925, checked in by Jay Jacobs <Jay.Jacobs@…>, 14 years ago

Added sanity function for quick test.

  • Property mode set to 100644
File size: 13.6 KB
Line 
1<?xml version="1.0"?>
2<xsd:schema targetNamespace="http://www.isi.edu/abac_types"
3  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
4  xmlns:tns="http://www.isi.edu/abac_types"
5  xmlns:xsd1="http://www.isi.edu/fedd_types"
6  xmlns="http://www.w3.org/2000/10/XMLSchema">
7
8  <xsd:annotation>
9    <xsd:documentation xml:lang="en">
10      Trust negotiation schema for the ABAC Project.
11    </xsd:documentation>
12  </xsd:annotation> 
13   
14  <xsd:complexType name="negotiationType">
15    <xsd:sequence>
16      <!-- the ABAC Message converted into WSDL types -->
17      <xsd:element name="message" type="tns:messageType"
18        minOccurs="1" maxOccurs="1"/>
19      <!-- the context id and the two negotiator urls if known-->
20      <xsd:element name="contextSource" type="tns:contextInfo"/>
21      <xsd:element name="contextDest" type="tns:contextInfo"/>
22      <xsd:element name="selfURL" type="xsd:string"/>
23      <xsd:element name="oppoURL" type="xsd:string"/>
24    </xsd:sequence>
25  </xsd:complexType>
26
27  <xsd:complexType name="observationType">
28    <xsd:choice>
29      <xsd:element name="NodeOp" type="tns:nodeOpType"/>
30      <xsd:element name="EdgeOp" type="tns:edgeOpType"/>
31      <xsd:element name="Message" type="tns:messageType"/>
32      <xsd:element name="Update" type="tns:updateType"/>
33    </xsd:choice>
34    <xsd:attribute name="count" type="xsd:decimal"/>
35  </xsd:complexType>
36 
37  <xsd:complexType name="negotiationRequest">
38    <xsd:sequence>
39      <xsd:element name="context" type="tns:contextInfo"/>
40      <xsd:element name="peerURL" type="xsd:string"/>
41      <xsd:element name="peerContext" type="tns:contextInfo"/>
42      <xsd:element name="selfURL" type="xsd:string"/>
43      <xsd:element name="goal" type="tns:goalType"/>
44    </xsd:sequence>
45  </xsd:complexType>
46
47  <xsd:complexType name="negotiationResult">
48    <xsd:sequence>
49      <xsd:element name="goal" type="tns:goalType"/>
50      <xsd:element name="result" type="xsd:string"/>
51      <xsd:element name="provenance" type="xsd:string"
52        minOccurs="0" maxOccurs="1"/>
53    </xsd:sequence>
54  </xsd:complexType>
55
56  <xsd:complexType name="trustRequest">
57    <xsd:sequence>
58      <xsd:element name="context" type="tns:contextInfo"/>
59      <xsd:element name="peerURL" type="xsd:string"/>
60      <xsd:element name="peerContext" type="tns:contextInfo"/>
61      <xsd:element name="selfURL" type="xsd:string"/>
62      <xsd:element name="goal" type="tns:flatGoalType"/>
63    </xsd:sequence>
64  </xsd:complexType>
65
66  <xsd:complexType name="trustResult">
67    <xsd:sequence>
68      <xsd:element name="goal" type="tns:flatGoalType"/>
69      <xsd:element name="result" type="xsd:string"/>
70      <xsd:element name="provenance" type="xsd:string"
71        minOccurs="0" maxOccurs="1"/>
72    </xsd:sequence>
73  </xsd:complexType>
74
75  <xsd:complexType name="addCredentialRequest">
76    <xsd:sequence>
77      <xsd:element name="type" type="xsd:string"/>
78      <xsd:element name="cred" type="xsd:string"/>
79      <xsd:element name="context" type="tns:contextInfo"/>
80    </xsd:sequence>
81  </xsd:complexType>
82
83  <xsd:complexType name="addCredentialResponse">
84    <xsd:sequence>
85      <xsd:element name="result" type="xsd:string"/>
86      <xsd:element name="context" type="tns:contextInfo"/>
87    </xsd:sequence>
88  </xsd:complexType>
89
90  <xsd:complexType name="addCertificateRequest">
91    <xsd:sequence>
92      <xsd:element name="alias" type="xsd:string"/>
93      <xsd:element name="cert" type="xsd:string"/>
94    </xsd:sequence>
95  </xsd:complexType>
96
97  <xsd:complexType name="certificateAlias">
98    <xsd:sequence>
99      <xsd:element name="alias" type="xsd:string"/>
100    </xsd:sequence>
101  </xsd:complexType>
102
103  <xsd:complexType name="removeCertificateResponse">
104    <xsd:sequence>
105      <xsd:element name="result" type="xsd:string"/>
106    </xsd:sequence>
107  </xsd:complexType>
108
109
110  <xsd:complexType name="discoveryType">
111    <xsd:sequence>
112      <!-- issuedBy, byRole (defining role), bySubject -->
113      <xsd:element name="op" type="xsd:string"/>
114      <xsd:choice>
115        <xsd:element name="role" type="tns:entityType"/>
116        <xsd:element name="subject" type="tns:simpleRoleType"/>
117        <xsd:element name="issuer" type="tns:principalType"/>
118      </xsd:choice>
119      <xsd:element name="result" type="tns:credentialType" 
120              minOccurs="0" maxOccurs="unbounded"/>
121    </xsd:sequence>
122  </xsd:complexType>
123
124  <!--Context info can be: the context data, a file pointing to the data, or
125        a uid handle to the data-->
126  <xsd:complexType name="contextInfo">
127    <xsd:choice>
128      <xsd:element name="context" type="tns:negotiationContextType"/>
129      <xsd:element name="contextFile" type="xsd:string"/>
130      <xsd:element name="contextID" type="xsd:string"/>
131    </xsd:choice>
132    <xsd:element name="peerUrl" type="xsd:string"/>
133  </xsd:complexType>
134
135  <xsd:complexType name="negotiationContextType">
136    <xsd:sequence>
137      <!-- Who am I -->
138      <xsd:element name="self" type="xsd:string"
139        minOccurs="1" maxOccurs="1"/>
140      <!-- Who is my opponent -->
141      <xsd:element name="peer" type="xsd:string"
142        minOccurs="0" maxOccurs="1"/>
143      <!-- What strategy for graph satisfaction do I use -->
144      <!-- If this is omitted then the factory uses the default -->
145      <xsd:element name="strategy" type="xsd:string"
146        minOccurs="0" maxOccurs="1"/>
147      <!-- My credential frontiers (if omitted they need to be added) -->
148      <xsd:element name="frontier" type="tns:frontier"
149        minOccurs="0" maxOccurs="1"/>
150      <!-- My opponents/discovered credential evidence (optional) -->
151      <xsd:element name="oppoCache" type="tns:credentialSet"
152        minOccurs="0" maxOccurs="1"/>
153    </xsd:sequence>
154  </xsd:complexType>
155
156  <xsd:complexType name="frontier">
157    <xsd:sequence>
158      <xsd:element name="oppoCache" type="tns:credentialSet"
159        minOccurs="0" maxOccurs="unbounded"/>
160      <xsd:element name="issuerTracesAll" type="tns:roleSet"
161        minOccurs="0" maxOccurs="unbounded"/>
162      <xsd:element name="issuerTracesDef" type="tns:roleSet"
163        minOccurs="0" maxOccurs="unbounded"/>
164      <xsd:element name="subjectTraceable" type="tns:roleSet"
165        minOccurs="0" maxOccurs="unbounded"/>
166    </xsd:sequence>
167  </xsd:complexType>
168
169  <xsd:complexType name="weightTable">
170    <xsd:sequence>
171      <xsd:element name="entry" type="tns:weightEntry"
172        minOccurs="0" maxOccurs="unbounded"/>
173    </xsd:sequence>
174  </xsd:complexType>
175
176  <xsd:complexType name="weightEntry">
177    <xsd:sequence>
178      <xsd:element name="key" type="tns:entityType"/>
179      <xsd:element name="value" type="xsd:float"
180        minOccurs="0" maxOccurs="1"/>
181    </xsd:sequence>
182  </xsd:complexType>
183
184  <xsd:complexType name="accessControlPolicy">
185    <xsd:sequence>
186      <xsd:element name="acFact" type="tns:accessControlFact"
187        minOccurs="0" maxOccurs="unbounded"/>
188    </xsd:sequence>
189  </xsd:complexType>
190
191  <xsd:complexType name="accessControlFact">
192    <xsd:sequence>
193      <xsd:element name="credential" type="xsd:string"/>
194      <xsd:element name="requirement" type="tns:entityType"/>
195    </xsd:sequence>
196  </xsd:complexType>
197
198  <xsd:complexType name="acknowledgementPolicy">
199    <xsd:sequence>
200      <xsd:element name="ackFact" type="tns:accessControlFact"
201        minOccurs="0" maxOccurs="unbounded"/>
202    </xsd:sequence>
203  </xsd:complexType>
204
205  <xsd:complexType name="acknowledgementPolicyFact">
206    <xsd:sequence>
207      <xsd:element name="credential" type="xsd:string"/>
208      <xsd:element name="field" type="xsd:string"/>
209      <xsd:element name="value" type="xsd:string"
210        minOccurs="0" maxOccurs="1"/>
211      <xsd:element name="requirement" type="tns:entityType"/>
212    </xsd:sequence>
213  </xsd:complexType>
214
215  <xsd:complexType name="roleSet">
216    <xsd:sequence>
217      <xsd:element name="credential" type="tns:simpleRoleType"
218        minOccurs="0" maxOccurs="unbounded"/>
219    </xsd:sequence>
220  </xsd:complexType>
221
222  <xsd:complexType name="roleTraceability">
223    <xsd:sequence>
224      <xsd:element name="role" type="tns:simpleRoleType"
225        minOccurs="1" maxOccurs="1"/>
226      <xsd:element name="traceability" type="xsd:string"
227        minOccurs="1" maxOccurs="1"/>
228    </xsd:sequence>
229  </xsd:complexType>
230
231  <xsd:complexType name="credentialSet">
232    <xsd:sequence>
233      <xsd:element name="credential" type="xsd:string"
234        minOccurs="0" maxOccurs="unbounded"/>
235    </xsd:sequence>
236  </xsd:complexType>
237
238  <xsd:complexType name="updateRequest">
239    <xsd:sequence>
240      <xsd:element name="issuerCredentials" type="tns:credentialType"
241        minOccurs="0" maxOccurs="unbounded"/>
242      <xsd:element name="subjectCredentials" type="tns:credentialType"
243        minOccurs="0" maxOccurs="unbounded"/>
244      <xsd:element name="traces" type="tns:roleTraceability"
245        minOccurs="0" maxOccurs="unbounded"/>
246      <xsd:element name="context" type="tns:contextInfo"
247        minOccurs="1" maxOccurs="1"/>
248    </xsd:sequence>
249  </xsd:complexType>
250
251  <xsd:complexType name="updateResults">
252    <xsd:sequence>
253      <xsd:element name="response" type="xsd:string"
254        minOccurs="0" maxOccurs="unbounded"/>
255    </xsd:sequence>
256  </xsd:complexType>
257
258  <xsd:complexType name="updateType">
259    <xsd:attribute name="value" type="xsd:string"/>
260  </xsd:complexType>
261
262  <xsd:complexType name="messageType">
263    <xsd:sequence>
264      <xsd:element name="EdgeOp" type="tns:edgeOpType" minOccurs="0" 
265        maxOccurs="unbounded"/>
266      <xsd:element name="NodeOp" type="tns:nodeOpType" minOccurs="0" 
267        maxOccurs="unbounded"/>
268      <xsd:element name="OpCount" type="xsd:integer"/>
269      <xsd:element name="Evidence" type="tns:evidenceType"/>
270    </xsd:sequence>
271  </xsd:complexType> 
272
273  <xsd:complexType name="nodeOpType">
274    <xsd:sequence>
275      <xsd:element name="TrustTarget"      type="tns:goalType"/>
276      <!--xsd:element name="SatisfactionState" type="xsd:string"/-->
277      <xsd:element name="ProcessingState"  type="xsd:string"/>
278      <xsd:element name="Order"            type="xsd:integer"/>
279    </xsd:sequence>
280    <xsd:attribute name="type" type="xsd:string" use="optional"/>
281  </xsd:complexType>
282
283  <xsd:complexType name="edgeOpType">
284    <xsd:sequence>
285      <xsd:element name="Parent"           type="tns:goalType"/>
286      <xsd:element name="Child"            type="tns:goalType"/>
287      <xsd:element name="ProcessingState"  type="xsd:string"/>
288      <!--xsd:element name="SatisfactionState" type="xsd:string"/-->
289      <xsd:element name="Order"            type="xsd:integer"/>
290    </xsd:sequence>
291    <xsd:attribute name="type" type="xsd:string"/>
292    <xsd:attribute name="newChild" type="xsd:date"/>
293  </xsd:complexType>
294
295  <xsd:complexType name="goalType">
296    <xsd:sequence>
297      <xsd:element name="Verifier"   type="tns:principalType"/>
298      <xsd:choice>
299        <xsd:element name="TrustTarget" type="tns:entityType"/>
300        <xsd:element name="LinkingTarget" type="xsd:string"/>
301      </xsd:choice>
302      <xsd:element name="Subject"   type="tns:entityType"/>
303      <!-- The type string confirms whether this is a LinkingGoal or TT -->
304      <xsd:element name="Type"     type="xsd:string"/>
305    </xsd:sequence>
306  </xsd:complexType>
307
308  <xsd:complexType name="flatGoalType">
309    <xsd:sequence>
310      <xsd:element name="Verifier"   type="xsd:string"/>
311      <xsd:choice>
312        <xsd:element name="TrustTarget" type="xsd:string"/>
313        <xsd:element name="LinkingTarget" type="xsd:string"/>
314      </xsd:choice>
315      <xsd:element name="Subject"   type="xsd:string"/>
316      <!-- The type string confirms whether this is a LinkingGoal or TT -->
317      <xsd:element name="Type"     type="xsd:string"/>
318    </xsd:sequence>
319  </xsd:complexType>
320
321
322  <!-- Here are the new credential descriptions -->
323
324  <xsd:complexType name="entityType">
325    <xsd:choice>
326      <xsd:element name="principal" type="tns:principalType"/>
327      <xsd:element name="role" type="tns:simpleRoleType"/>
328      <xsd:element name="linkedrole" type="tns:linkedRoleType"/>
329      <xsd:element name="intersection" type="tns:intersectionType"/>
330    </xsd:choice>
331  </xsd:complexType>
332
333  <xsd:complexType name="roleType">
334    <xsd:choice>
335      <xsd:element name="role" type="tns:simpleRoleType"/>
336      <xsd:element name="linkedrole" type="tns:linkedRoleType"/>
337    </xsd:choice>
338  </xsd:complexType>
339
340  <!-- This is a copy of fedd's IDType, included in case we have to expand or
341       restrict it. XSD isn't wonderful at expressing these kinds of synonyms
342       between complex types. -->
343  <xsd:complexType name="principalType">
344    <xsd:choice>
345      <xsd:element name="uuid" type="xsd:base64Binary"/>
346      <xsd:element name="fedid" type="xsd:base64Binary"/>
347      <xsd:element name="uri" type="xsd:string"/>
348      <xsd:element name="localname" type="xsd:string"/>
349      <xsd:element name="kerberosUsername" type="xsd:string"/>
350    </xsd:choice>
351  </xsd:complexType>
352
353  <xsd:complexType name="simpleRoleType">
354    <xsd:sequence>
355      <xsd:element name="principal" type="tns:principalType"/>
356      <xsd:element name="rolename" type="xsd:string"/>
357    </xsd:sequence>
358  </xsd:complexType>
359
360  <xsd:complexType name="linkedRoleType">
361    <xsd:sequence>
362      <xsd:element name="linkingrole" type="tns:simpleRoleType"/>
363      <xsd:element name="rolename" type="xsd:string"/>
364    </xsd:sequence>
365  </xsd:complexType>
366
367  <xsd:complexType name="intersectionType">
368    <xsd:sequence>
369      <xsd:element name="role" type="tns:roleType" minOccurs="2" 
370        maxOccurs="unbounded"/>
371    </xsd:sequence>
372  </xsd:complexType>
373
374  <xsd:complexType name="credentialType">
375    <xsd:sequence>
376      <xsd:element name="role" type="tns:roleType"/>
377      <xsd:element name="requirement" type="tns:entityType"/>
378      <xsd:choice>
379        <!-- test should not be used in production -->
380        <xsd:element name="test" type="xsd:string"/>
381        <xsd:element name="x509" type="xsd:string"/>
382      </xsd:choice>
383    </xsd:sequence>
384  </xsd:complexType>
385
386  <xsd:complexType name="evidenceType">
387    <xsd:sequence>
388      <xsd:element name="credential" type="tns:credentialType" minOccurs="1"
389        maxOccurs="unbounded"/>
390    </xsd:sequence>
391  </xsd:complexType>
392
393</xsd:schema>
Note: See TracBrowser for help on using the repository browser.