source: wsdl/abac_types.xsd @ 7b26c39

axis_examplecompt_changesinfo-opsversion-3.01version-3.02
Last change on this file since 7b26c39 was 4ac0a41, checked in by Jay Jacobs <Jay.Jacobs@…>, 14 years ago

Added dsicovery datatypes and modified the credential updates for
issuer and subject credentials.

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