OASIS Service Provisioning Markup Language (SPML) Version 2
Total Page:16
File Type:pdf, Size:1020Kb
1
1
2OASIS Service Provisioning Markup 3Language (SPML) Version 2
4Draft Committee Specification 0.10 52005 June 7
6Document identifier: draft-pstc-SPMLv2.doc 7Location: http://www.oasis-open.org/committees/provision/docs/ 8Send comments to: [email protected] 9Editor: 10 Gary Cole, Sun Microsystems ([email protected]) 11Contributors: 12 Jeff Bohren, BMC 13 Gerry Woods, SOA Software 14 Doron Cohen, BMC 15 Darran Rolls, Sun Microsystems 16 Gavenraj Sodhi, CA 17 Hal Lockhart, BEA 18 Jeff Larson, Sun Microsystems 19 Rami Elron, BMC 20 Gary Cole, Sun Microsystems 21 Ron Jacobsen, CA 22 Martin Raepple, SAP 23 Cory Williams, IBM 24 Ian Glazer, IBM 25Abstract:
26 This specification defines the concepts and operations of an XML-based provisioning 27 request-and-response protocol. 28Status:
29 This is a candidate Committee Specification that is undergoing a vote of the OASIS 30 membership in pursuit of OASIS Standard status.
31 If you are on the provision list for committee members, send comments there. If you are not 32 on that list, subscribe to the [email protected] list and send 33 comments there. To subscribe, send an email message to provision-comment- 34 [email protected] with the word "subscribe" as the body of the message.
207212bb8d0cf1f11a2b881ca263fc19f.doc Page 1 of 158 35Copyright (C) OASIS Open 2005. All Rights Reserved.
307212bb8d0cf1f11a2b881ca263fc19f.doc Page 2 of 158 36Table of contents 371 Introduction...... 5 38 1.1 Purpose...... 5 39 1.2 Organization...... 5 40 1.3 Audience...... 5 41 1.4 Notation...... 6 42 1.4.1 Normative sections...... 6 43 1.4.2 Normative terms...... 6 44 1.4.3 Typographical conventions...... 6 45 1.4.4 Namespaces...... 7 462 Concepts...... 8 47 2.1 Domain Model...... 8 48 2.1.1 Requestor...... 8 49 2.1.2 Provider...... 9 50 2.1.3 Target...... 9 51 2.1.3.1 Target Schema...... 9 52 2.1.3.2 Supported Schema Entities...... 10 53 2.1.3.3 Capabilities...... 10 54 2.1.4 Provisioning Service Object (PSO)...... 10 55 2.2 Core Protocol...... 10 56 2.3 Profile...... 11 573 Protocol...... 12 58 3.1 Request/Response Model...... 12 59 3.1.1 Conversational flow...... 14 60 3.1.2 Status and Error codes...... 14 61 3.1.2.1 Status (normative)...... 14 62 3.1.2.2 Error (normative)...... 15 63 3.1.3 Synchronous and asynchronous operations...... 15 64 3.1.3.1 ExecutionMode attribute...... 16 65 3.1.3.2 Async Capability...... 16 66 3.1.3.3 Determining execution mode...... 17 67 3.1.3.4 Results of asynchronous operations (normative)...... 19 68 3.1.4 Individual and batch requests...... 19 69 3.2 Identifiers...... 20 70 3.2.1 RequestID (normative)...... 20 71 3.2.2 Target Identifier (normative)...... 21 72 3.2.3 PSO Identifier (normative)...... 21 73 3.3 Selection...... 23 74 3.3.1 QueryClauseType...... 23 75 3.3.2 Logical Operators...... 23 76 3.3.3 SelectionType...... 24 77 3.3.3.1 SelectionType in a Request (normative)...... 24 78 3.3.3.2 SelectionType Processing (normative)...... 25 79 3.3.3.3 SelectionType Errors (normative)...... 26 80 3.3.4 SearchQueryType...... 26 81 3.3.4.1 SearchQueryType in a Request (normative)...... 27 82 3.3.4.2 SearchQueryType Errors (normative)...... 28 83 3.4 Transactional Semantics...... 29 84 3.5 Operations...... 29 85 3.5.1 Core Operations...... 29 86 3.5.1.1 listTargets...... 29 87 3.5.1.2 add...... 39 88 3.5.1.3 lookup...... 44 89 3.5.1.4 modify...... 49
407212bb8d0cf1f11a2b881ca263fc19f.doc Page 3 of 158 90 3.5.1.5 delete...... 56 91 3.5.2 Async Capability...... 59 92 3.5.2.1 cancel...... 59 93 3.5.2.2 status...... 61 94 3.5.3 Batch Capability...... 66 95 3.5.3.1 batch...... 66 96 3.5.4 Bulk Capability...... 73 97 3.5.4.1 bulkModify...... 73 98 3.5.4.2 bulkDelete...... 75 99 3.5.5 Password Capability...... 78 100 3.5.5.1 setPassword...... 78 101 3.5.5.2 expirePassword...... 80 102 3.5.5.3 resetPassword...... 81 103 3.5.5.4 validatePassword...... 83 104 3.5.6 Reference Capability...... 86 105 3.5.6.1 Reference Definitions...... 88 106 3.5.6.2 References...... 89 107 3.5.6.3 Complex References...... 89 108 3.5.7 Search Capability...... 95 109 3.5.7.1 search...... 96 110 3.5.7.2 iterate...... 102 111 3.5.7.3 closeIterator...... 107 112 3.5.8 Suspend Capability...... 111 113 3.5.8.1 suspend...... 111 114 3.5.8.2 resume...... 113 115 3.5.8.3 active...... 115 116 3.6 Custom Capabilities...... 118 1174 Conformance (normative)...... 119 118 4.1 Core operations and schema are mandatory...... 119 119 4.2 Standard capabilities are optional...... 119 120 4.3 Custom capabilities...... 119 1215 Security and privacy considerations...... 120 122 5.1 Threat model...... 120 123 5.1.1 Unauthorized disclosure...... 120 124 5.1.2 Message Replay...... 120 125 5.1.2.1 Message insertion...... 120 126 5.1.2.2 Message deletion...... 120 127 5.1.2.3 Message modification...... 121 128 5.2 Safeguards...... 121 129 5.2.1 Authentication...... 121 130 5.2.2 Confidentiality...... 121 131 5.2.2.1 Communication confidentiality...... 121 132 5.2.2.2 Trust model...... 122 133 5.2.2.3 Privacy...... 122 134Appendix A. Core XSD...... 123 135Appendix B. Async Capability XSD...... 130 136Appendix C. Batch Capability XSD...... 132 137Appendix D. Bulk Capability XSD...... 134 138Appendix E. Password Capability XSD...... 136 139Appendix F. Reference Capability XSD...... 138 140Appendix G. Search Capability XSD...... 140 141Appendix H. Suspend Capability XSD...... 143 142Appendix I. Document References...... 145 143Appendix J. Acknowledgments...... 147 144Appendix K. Notices...... 148 145Appendix L. Revision history...... 149
507212bb8d0cf1f11a2b881ca263fc19f.doc Page 4 of 158 146
607212bb8d0cf1f11a2b881ca263fc19f.doc Page 5 of 158 7
1471 Introduction
1481.1 Purpose
149This specification defines the concepts and operations of an XML-based provisioning request-and- 150response protocol.
1511.2 Organization
152The body of this specification is organized into three major sections: Concepts, Protocol and 153Conformance. 154 The Concepts section introduces the main ideas in SPMLv2. Subsections highlight significant 155 features that later sections will discuss in more detail. 156 The Protocol section first presents an overview of protocol features and then discusses the 157 purpose and behavior of each protocol operation. The core operations are presented in an 158 order that permits a continuing set of examples. Subsequent sections present optional 159 operations. 160 161 Each section that describes an operation includes: 162 - The relevant XML Schema 163 - A normative subsection that describes the request for the operation 164 - A normative subsection that describes the response to the operation 165 - A non-normative sub-section that discusses examples of the operation 166 The Conformance section describes the aspects of this protocol that a requestor or provider 167 must support in order to be considered conformant. 168 A Security and privacy considerations section describes risks that an implementer of this 169 protocol should weigh in deciding how to deploy this protocol in a specific environment. 170Appendices contain additional information that supports the specification, including references to 171other documents.
1721.3 Audience
173The PSTC intends this specification to meet the needs of several audiences. 174One group of readers will want to know: "What is SPML?” 175A reader of this type should pay special attention to the Concepts section. 176A second group of readers will want to know: "How would I use SPML?" 177A reader of this type should read the Protocol section 178(with special attention to the examples). 179A third group of readers will want to know: "How must I implement SPML?" 180A reader of this type must read the Protocol section 181(with special attention to normative request and response sub-sections). 182A reader who is already familiar with SPML 1.0 will want to know: “What is new in SPMLv2?” 183A reader of this type should read the Concepts section thoroughly 184and also read the Appendix ?? which describes changes from SPML1.0 to SPMLv2.
807212bb8d0cf1f11a2b881ca263fc19f.doc Page 6 of 158 1851.4 Notation
1861.4.1 Normative sections
187Normative sections of this specification are labeled as such. The title of a normative section will 188contain the word “normative” in parentheses, as in the following title: “Syntax (normative)”.
1891.4.2 Normative terms
190This specification contains schema that conforms to W3C XML Schema and contains normative 191text that describes the syntax and semantics of XML-encoded policy statements. 192The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", 193"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this specification are to be 194interpreted as described in IETF RFC 2119 [RFC2119] 195 "they MUST only be used where it is actually required for interoperation or to limit 196 behavior which has potential for causing harm (e.g., limiting retransmissions)" 197These keywords are capitalized when used to unambiguously specify requirements of the protocol 198or application features and behavior that affect the interoperability and security of implementations. 199When these words are not capitalized, they are meant in their natural-language sense.
2001.4.3 Typographical conventions
201This specification uses the following typographical conventions in text: Format Description Indicates xmlName monospace font The name of an XML attribute, element or type.
“attributeName” monospace font An instance of an XML attribute. surrounded by double quotes
‘attributeValue’ monospace font A literal value (of type string). surrounded by double quotes
“attributeName=’value’ monospace font name An instance of an XML attribute value. ” followed by equals sign and value Read as “a value of (value) specified for surrounded by an instance of the (attributeName) single quotes attribute.” {XmlTypeName} monospace font The name of an XML type or surrounded by that is defined as part of SPMLv2. {ns:XmlTypeName} curly braces
202Terms in italic bold-face are intended to have the meaning defined in the Glossary.
203Listings of SPML schemas appear like this.
907212bb8d0cf1f11a2b881ca263fc19f.doc Page 7 of 158 204
205Example code listings appear like this.
2061.4.4 Namespaces
207Conventional XML namespace prefixes are used throughout the listings in this specification to 208stand for their respective namespaces as follows, whether or not a namespace declaration is 209present in the example:
210 The prefix dsml: stands for the Directory Services Markup Language namespace [DSML].
211 The prefix xsd: stands for the W3C XML Schema namespace [XSD].
212 The prefix spml: stands for the SPMLv2 Core XSD namespace 213 [SPMLv2-CORE].
214 The prefix spmlasync: stands for the SPMLv2 Async Capability XSD namespace. [SPMLv2- 215 ASYNC].
216 The prefix spmlbatch: stands for the SPMLv2 Batch Capability XSD namespace 217 [SPMLv2-BATCH].
218 The prefix spmlbulk: stands for the SPMLv2 Bulk Capability XSD namespace 219 [SPMLv2-BULK].
220 The prefix spmlpass: stands for the SPMLv2 Password Capability XSD namespace 221 [SPMLv2-PASS].
222 The prefix spmlref: stands for the SPMLv2 Reference Capability XSD namespace 223 [SPMLv2-REF].
224 The prefix spmlsearch: stands for the SPMLv2 Search Capability XSD namespace 225 [SPMLv2-SEARCH].
226 The prefix spmlsuspend: stands for the SPMLv2 Suspend Capability XSD namespace 227 [SPMLv2-SUSPEND].
1007212bb8d0cf1f11a2b881ca263fc19f.doc Page 8 of 158 11
2282 Concepts
229SPML Version 2 (SPMLv2) builds on the concepts defined in SPML Version 1. 230The basic roles of Requesting Authority (RA) and Provisioning Service Provider (PSP) are 231unchanged. The core protocol continues to define the basis for interoperable management of 232Provisioning Service Objects (PSO). However, the concept of Provisioning Service Target (PST) 233has taken on new importance in SPMLv2.
2342.1 Domain Model
235The following section describes the main conceptual elements of the SPML domain model. The 236Entity Relationship Diagram (ERD) in Figure 1 shows the basic relationships between these 237elements.
RA PSP
PST
PSO
238 239 Figure 1. Domain model elements
2402.1.1 Requestor
241A Requesting Authority (RA) or requestor is a software component that issues well-formed SPML 242requests to a Provisioning Service Provider. Examples of requestors include: 243 Portal applications that broker the subscription of client requests to system resources 244 Service subscription interfaces within an Application Service Provider 245Trust relationship. In an end-to-end integrated provisioning scenario, any component that issues 246an SPML request is said to be operating as a requestor. This description assumes that the 247requestor and its provider have established a trust relationship between them. The details of 248establishing and maintaining this trust relationship are beyond the scope of this specification.
1207212bb8d0cf1f11a2b881ca263fc19f.doc Page 9 of 158 2492.1.2 Provider
250A Provisioning Service Provider (PSP) or provider is a software component that listens for, 251processes, and returns the results for well-formed SPML requests from a known requestor. For 252example, an installation of an Identity Management system could serve as a provider. 253Trust relationship. In an end-to-end integrated provisioning scenario, any component that 254receives and processes an SPML request is said to be operating as a provider. This description 255assumes that the provider and its requestor have established a trust relationship between them. 256The details of establishing and maintaining this trust relationship are beyond the scope of this 257specification.
2582.1.3 Target
259A Provisioning Service Target (PST) or target represents a destination or endpoint that a provider 260makes available for provisioning actions. 261A target is not a provider. A requestor asks a provider to act upon objects that the provider 262manages. Each target is a container for objects that a provider manages. 263A target may not be an actual endpoint. A target may represent a traditional user account source 264(such as a Windows NT domain or a directory service instance), or a target may represent an 265abstract collection of endpoints. 266Every provider exposes at least one target. Each target represents a destination or endpoint 267(e.g., a system, application or service—or a set of systems, applications, and services) to which the 268provider can provision (e.g., create or modify accounts). 269A target is a special, top-level object that: 270 A requestor can discover from the provider 271 No requestor can add, modify, delete or otherwise act upon 272 May contain any number of provisioning service objects (PSO) upon which a requestor may act 273 May contain a schema that defines the XML structure of the provisioning service objects (PSO) 274 that the target may contain 275 May define which schema entities the target supports 276 May expose capabilities: 277 - That apply to every supported schema entity 278 - That apply only to specific schema entities 279The SPMLv2 model does not restrict a provider’s targets other than to specify that: 280 A provider (PSP) must uniquely identify each target that it exposes. 281 A provider must uniquely identify each object (PSO) that a target contains. 282 Exactly one target must contain each object (PSO) that the provider manages.
2832.1.3.1 Target Schema
284The schema for each target defines the XML structure of the objects (PSO) that the target may 285contain. 286SPMLv2 does not specify a required format for the target schema. For example, a target schema 287could be XML Schema [XSD] or (a target schema could be) SPML1.0 Schema [SPMLv2-Profile- 288DSML]. 289Each target schema includes a schema namespace. The schema namespace indicates (to any 290requestor that recognizes the schema namespace) how to interpret the schema.
1307212bb8d0cf1f11a2b881ca263fc19f.doc Page 10 of 158 291A provider must present any object (to a requestor) as XML that is valid according to the schema of 292the target that contains the object. A requestor must accept and manipulate, as XML that is valid 293according to the schema of the target, any object that a target contains.
2942.1.3.2 Supported Schema Entities
295A target may declare that it supports only a subset of the entities (e.g., objectclasses or top-level 296elements) in its schema. A target that does not declare such a subset is assumed to support every 297entity in its schema. 298A provider must implement the basic SPML operations for objects on each target that are instances 299of each schema entity that the target supports.
3002.1.3.3 Capabilities
301A target may also expose a set of capabilities that it supports. Each capability defines optional 302operations or semantics. 303A capability must be either "standard" or "custom": 304 The OASIS PSTC defines each standard capability in an SPML namespace. 305 See the section entitled “Namespaces”. 306 Anyone may define a custom capability in another namespace. 307A target may support a capability for all of its supported schema entities or (a target may support a 308capability) only for specific subset of its supported schema entities. Each capability may specify 309any number of supported schema entities to which it applies. A capability that does not specify a 310supported schema entity is assumed to apply to every schema entity that the target supports. 311Optional operations. If a capability defines an optional operation and if the target supports that 312capability for a schema entity of which an object is an instance, then the provider must support that 313optional operation for that object. For example, if a target supports the Password Capability for 314User objects (but not for Group objects), then a requestor may ask the provider to perform the 315‘resetPassword’ operation for any User object (but the provider will fail any request to 316‘resetPassword’ for a Group).
3172.1.4 Provisioning Service Object (PSO)
318A Provisioning Service Object (PSO), sometimes simply called an object, represents a data entity 319or an information object on a target. For example, a provider would represent each account that 320the provider manages as an object. 321NOTE: Within this document, the term “object” (unless otherwise qualified) refers to a PSO. 322Every object is contained by exactly one target. Each object has a unique identifier (PSO-ID).
3232.2 Core Protocol
324SPMLv2 retains the SPML1.0 concept of a “core protocol”. The SPMLv2 Core XSD defines: 325 Basic operations (such as ‘add’, ’modify’ and ‘delete’) 326 Basic and extensible data elements 327 The means to expose individual targets and optional operations 328The SPMLv2 Core XSD also defines modal mechanisms that allow a requestor to: 329 Specify that a requested operation must be executed asynchronously 330 (or to specify that a requested operation must be executed synchronously)
1407212bb8d0cf1f11a2b881ca263fc19f.doc Page 11 of 158 331 Recognize that a provider has chosen to execute an operation asynchronously 332 Obtain the status of an asynchronous request 333 Cancel an asynchronous request 334Conformant SPMLv2 implementations must support the core protocol, including: 335 The new ‘listTargets’ operation 336 The basic operations for every schema entity that a target supports 337 The modal mechanisms for asynchronous operations 338(For more information, see the section entitled “Conformance”).
3392.3 Profile
340SPMLv2 defines two “profiles” in which a requestor and provider may exchange SPML protocol: 341 XML Schema as defined in the “SPMLv2 XSD Profile” [SPMLv2-Profile-XSD]. 342 DSMLv2 as defined in the “SPMLv2 DSMLv2 Profile” [SPMLv2-Profile-DSML]. 343A requestor and a provider may exchange SPML protocol in any profile to which they agree. 344SPML 1.0 defined file bindings and SOAP bindings that assumed the SPML1.0 Schema for DSML 345[SPML-Bind]. The SPMLv2 DSMLv2 Profile provides a degree of backward compatibility with 346SPML 1.0. The DSMLv2 profile supports a schema model similar to that of SPML 1.0. 347The DSMLv2 Profile may be more convenient for applications that access mainly targets that are 348LDAP or X500 directory services. The XSD Profile may be more convenient for applications that 349access mainly targets that are web services.
1507212bb8d0cf1f11a2b881ca263fc19f.doc Page 12 of 158 16
3503 Protocol
351The general model adopted by this protocol is that a requestor (client) asks a provider (server) to 352perform operations. In the simplest case, each request for an SPML operation is processed 353individually and is processed synchronously. The “Request/Response Model” section below 354presents this general model and discusses mechanisms that govern asynchronous execution. The 355Identifiers and Selection sections also describe aspects (of the protocol) that apply to many 356operations. 357In order to encourage adoption of this standard, this specification minimizes the set of operations 358that a provider must implement. The Core Operations section discusses these required operations. 359This specification also defines optional operations. Some operations are optional (rather than 360required) because the operations may be more difficult for a provider to implement for certain kinds 361of targets. Some operations are optional because the operations may apply only to specific types of 362objects on a target. This specification defines a set of standard capabilities, each of which groups 363optional operations that are functionally related. The remainder of the Operations section discusses 364optional operations (such as search) that are associated with SPMLv2’s standard capabilities. 365The capability mechanism in SPMLv2 is open and allows an individual provider (or any third party) 366to define additional custom capabilities. See Custom Capabilities later in this section.
3673.1 Request/Response Model
368The general model adopted by this protocol is that a requestor (client) asks a provider (server) to 369perform an operation. A requestor asks a provider to perform an operation by sending to the 370provider an SPML request that describes the operation. The provider examines the request and, if 371the provider determines that the request is valid, the provider does whatever is necessary to 372implement the requested operation. The provider also returns to the requestor an SPML response 373that details any status or error that pertains to the request.
1707212bb8d0cf1f11a2b881ca263fc19f.doc Page 13 of 158
1807212bb8d0cf1f11a2b881ca263fc19f.doc Page 14 of 158 use="required"/>
374The following subsections describe aspects of this request/response model in more detail: 375 the exchange of requests and responses between requestor and provider 376 synchronous and asynchronous execution of operations 377 individual and batch requests
3783.1.1 Conversational flow 379A requestor asks a provider to do something by issuing an SPML request. A provider responds 380exactly once to each request. Therefore, the simplest conversation (i.e., pattern of exchange) 381between a requestor and a provider is an orderly alternation of request and response. However, the 382SPML protocol does not require this. A requestor may issue any number of concurrent requests to 383a single provider. A requestor may issue any number of concurrent requests to multiple providers. 384Recommend requestID. Each SPML request should specify a reasonably unique identifier as the 385value of “requestID”. See “Request Identifier (normative)”. This allows a requestor to control the 386identifier for each requested operation and (also allows the requestor) to match each response to 387the corresponding request without relying on the transport protocol that underlies the SPML 388protocol exchange.
3893.1.2 Status and Error codes
390A provider’s response always specifies a “status”. This value tells the requestor what the 391provider did with (the operation that was described by) the corresponding request. 392If a provider’s response specifies “status=’failure’”, then the provider’s response must also specify 393an “error”. This value tells the requestor what type of problem prevented the provider from 394executing (the operation that was described by) the corresponding request.
395The “status” and “error” attributes of a response apply to (the operation that is described by) 396the corresponding request. This is straightforward for most requests. The status and batch 397operations present the only subtleties. 398 A status request asks for the status of another operation that the provider is already executing 399 asynchronously. See “Synchronous and asynchronous operations” below. A status response 400 has status and error attributes that tell the requestor what happened to the status request itself. 401 However, the response to a successful status operation also contains a nested response that 402 tells what has happened to the operation that the provider is executing asynchronously. 403 A batch request contains nested requests (each of which describes an operation). The 404 response to a batch request contains nested responses (each of which corresponds to a 405 request that was nested in the batch request). See “Individual and batch requests” below.
4063.1.2.1 Status (normative)
407A provider’s response MUST specify “status” as one of the following values: ‘success’, 408‘failure’ or ‘pending’.
1907212bb8d0cf1f11a2b881ca263fc19f.doc Page 15 of 158 409 A response that specifies “status=’success’” 410 indicates that the provider has completed the requested operation. 411 In this case, the response contains any result of the operation 412 and the response MUST NOT specify “error” (see below).
413 A response that specifies “status=’failure’” 414 indicates that the provider could not complete the requested operation. 415 In this case, the response MUST specify an appropriate value of “error” (see below).
416 A response that specifies “status=’pending’” 417 indicates that the provider will execute the requested operation asynchronously 418 (see “Synchronous and asynchronous operations” below). 419 In this case, the response acknowledges the request and contains the “requestID” value 420 that identifies the asynchronous operation.
4213.1.2.2 Error (normative)
422A response that specifies “status=’failure’” MUST specify an appropriate value of “error”:
423 A response that specifies “error=’malformedRequest’” 424 indicates that the provider could not interpret the request. 425 This includes, but is not limited to, parse errors.
426 A response that specifies “error=’unsupportedOperation’” 427 indicates that the provider does not support the operation that the request specified.
428 A response that specifies “error=’unsupportedIdentifierType’” 429 indicates that the provider does not support the type of identifier specified in the request.
430 A response that specifies “error=’noSuchIdentifier’” 431 indicates that the provider (supports the type of identifier specified in the request, 432 but the provider) cannot find the object to which an identifier refers.
433 A response that specifies “error=’unsupportedExecutionMode’” 434 indicates that the provider does not support the requested mode of execution.
435 A response that specifies “error=’invalidContainment’” 436 indicates that the provider cannot add the specified object to the specified container. 437 - The request may not specify a valid container--especially if the request specifies 438 as the container an object on the target (rather than the target itself). 439 The target schema implicitly or explicitly declares each supported schema entity. 440 An explicit declaration of a supported schema entity specifies whether an instance 441 of that schema entity may contain other objects. 442 - The request may have specified a container that is not valid for the specified object. 443 The target (or a system or application that underlies the target) may restrict the types of 444 objects that the provider can add to the specified container. The target (or a system or 445 application that underlies the target) may restrict the containers to which the provider can 446 add the specified object.
447 A response that specifies “error=’customError’” indicates that the provider has 448 encountered an error that none of the standard error code values describes. 449 In this case, the provider’s response SHOULD provide error information in a format that is 450 available to the requestor. SPMLv2 does not specify the format of a custom error.
2007212bb8d0cf1f11a2b881ca263fc19f.doc Page 16 of 158 4513.1.3 Synchronous and asynchronous operations
452A provider may execute a requested operation either synchronously or asynchronously. 453 Synchronous: operation before response. If a provider executes a requested operation 454 synchronously, the provider completes the requested operation before the provider returns a 455 response to the requestor. The response will include the status and any error or result. 456 Asynchronous: response before operation. If a provider executes a requested operation 457 asynchronously, the provider returns to the requestor a response (that indicates that the 458 operation will be executed asynchronously) before the provider executes the requested 459 operation. The response will specify “status=’pending’” and will specify a “requestID” 460 value that the requestor must use in order to cancel the asynchronous operation or (in order to) 461 obtain the status or results of the asynchronous operation.
462 - If a request specifies “requestID”, then the provider’s response to that request will 463 specify the same “requestID” value. 464 Requestor Provider REQUEST requestID=1
RESPONSE requestID=1 status=”pending”
465 - If the request omits “requestID”, then the provider’s response to that will specify a 466 “requestID” value that is generated by the provider. 467 Requestor REQUEST Provider
RESPONSE requestID=9 status=”pending”
468A requestor may specify the execution mode for an operation in its request or (a requestor may 469omit the execution mode and thus) allow the provider to decide the execution mode (for the 470requested operation). If the requestor specifies an execution mode that the provider cannot support 471for the requested operation, then the provider will fail the request.
4723.1.3.1 ExecutionMode attribute
473A requestor uses the optional “executionMode” attribute of an SPML request to specify that the 474provider must execute the specified operation synchronously or (to specify that the provider must 475execute the specified operation) asynchronously. If a requestor omits the “executionMode” 476attribute from an SPML request, the provider decides whether to execute the requested operation 477synchronously or (to execute the requested operation) asynchronously.
4783.1.3.2 Async Capability
479A provider uses the Async Capability that is defined as part of SPMLv2 to tell any requestor that the 480provider supports asynchronous execution of requested operations on objects contained by that 481target. A target may further refine this declaration to apply only to specific types of objects (i.e., for a 482specific subset of supported schema entities) on the target. 483SPMLv2’s Async Capability also defines two operations that a requestor may use to manage other 484operations that a provider is executing asynchronously:
2107212bb8d0cf1f11a2b881ca263fc19f.doc Page 17 of 158 485 A ‘status’ operation allows a requestor to check the status (and optionally results) of an 486 operation (or of all operations) 487 A ‘cancel’ operation asks the provider to stop executing an operation. 488For more information, see the Async Capability section.
4893.1.3.3 Determining execution mode
490By default, a requestor allows a provider to decide whether to execute a requested operation 491synchronously or asynchronously. A requestor that needs the provider to execute a requested 492operation in a particular manner must specify this in the request. Each subsection that follows 493describes one of the four possibilities: 494 Requestor specifies synchronous execution 495 Requestor specifies asynchronous execution 496 Provider chooses synchronous execution 497 Provider chooses asynchronous execution 498The following subsections normatively apply to every SPMLv2 operation unless the normative text 499that describes an operation specifies otherwise.
5003.1.3.3.1 Requestor specifies synchronous execution (normative)
501A requestor MAY specify that an operation must execute synchronously. A requestor that wants the 502provider to execute an operation synchronously MUST specify 503“executionMode=‘synchronous’“ in the SPML request. 504If a requestor specifies that an operation must be executed synchronously and the provider cannot 505execute the requested operation synchronously, then the provider MUST fail the operation. If a 506provider fails an operation because the provider cannot execute the operation synchronously, then 507the provider’s response MUST specify “status=’failed’” and 508“error=’unsupportedExecutionMode’”. 509If a requestor specifies that an operation must be executed synchronously and the provider does 510not fail the request, then the provider implicitly agrees to execute the requested operation 511synchronously. The provider MUST acknowledge the request with a response that contains any 512status and any error or output of the operation. The provider’s response MUST NOT specify 513“status=’pending’”. The provider’s response MUST specify either “status='success'” or 514“status=’failed’”.
515 If the provider’s response specifies “status=’failed’”, then the provider’s response must 516 have an “error” attribute.
517 If the provider’s response specifies “status='success'”, then the provider’s response MUST 518 contain any additional results (i.e., output) of the completed operation.
5193.1.3.3.2 Requestor specifies asynchronous execution (normative)
520A requestor may specify that an operation must execute asynchronously. A requestor that wants 521the provider to execute an operation asynchronously MUST specify 522“executionMode=‘asynchronous’” in the SPML request. 523If a requestor specifies that an operation must be executed asynchronously and the provider cannot 524execute the requested operation asynchronously, then the provider MUST fail the operation. If the 525provider fails the operation because the provider cannot execute the operation asynchronously,
2207212bb8d0cf1f11a2b881ca263fc19f.doc Page 18 of 158 526then the provider’s response MUST specify “status=’failed’” and (the provider’s response 527MUST specify) “error=’unsupportedExecutionMode’”. 528If a requestor specifies that an operation must be executed asynchronously and the provider does 529not fail the request, then the provider implicitly agrees to execute the requested operation 530asynchronously. The provider MUST acknowledge the request with a synchronous response that 531indicates that the operation will execute asynchronously. The provider’s response MUST specify 532“status=’pending’” and (the provider’s response MUST specify) “requestID=’
533 If the request specifies a “requestID” value, then the provider’s response MUST specify the 534 same “requestID” value.
535 If the request omits “requestID”, then the provider’s response MUST specify a 536 “requestID” value that uniquely identifies the requested operation within the namespace of 537 the provider. 538If the provider’s response indicates that the requested operation will execute asynchronously, the 539requestor may continue with other processing. If the requestor wishes to obtain the status and 540results of the requested operation (or to cancel the requested operation), the requestor MUST use 541the “requestID” value that is returned in the provider’s response to identify the operation. 542See also the sections entitled “Async Capability” and “Results of asynchronous operations 543(normative)”.
5443.1.3.3.3 Provider chooses synchronous execution (normative)
545A requestor MAY allow the provider to decide whether to execute a requested operation 546synchronously or asynchronously. A requestor that wants to let the provider decide the type of 547execution for an operation MUST omit the “executionMode” attribute of the SPML request. 548If a requestor lets the provider decide the type of execution for an operation and the provider 549chooses to execute the requested operation synchronously, then the provider’s response MUST 550indicate that the requested operation was executed synchronously. The provider’s response MUST 551NOT specify “status=’pending’”. The provider’s response MUST specify either 552“status='success'” or “status=’failed’”.
553 If the provider’s response specifies “status=’failed’”, then the provider’s response must 554 have an “error” attribute.
555 If the provider’s response specifies “status='success'”, then the provider’s response MUST 556 contain any additional results (i.e., output) of the completed operation.
5573.1.3.3.4 Provider chooses asynchronous execution (normative)
558A requestor MAY allow a provider to decide whether to execute a requested operation 559synchronously or asynchronously. A requestor that wants to let the provider decide the type of 560execution for an operation MUST omit the “executionMode” attribute of the SPML request. 561If a requestor lets the provider decide the type of execution for an operation and the provider 562chooses to execute the requested operation asynchronously, then the provider’s response must 563indicate that the the requested operation will execute asynchronously. The provider MUST 564acknowledge the request with a response that indicates that the operation will execute 565asynchronously. The provider’s response MUST specify “status=’pending’” and (the provider’s 566response MUST specify) “requestID=’
2307212bb8d0cf1f11a2b881ca263fc19f.doc Page 19 of 158 567 If the request specifies a “requestID” value, then the provider’s response MUST specify the 568 same “requestID” value.
569 If the request omits “requestID”, then the provider’s response MUST specify a 570 “requestID” value that uniquely identifies the requested operation within the namespace of 571 the provider. 572If the provider’s response indicates that the requested operation will execute asynchronously, the 573requestor may continue with other processing. If the requestor wishes to obtain the status and 574results of the requested operation (or to cancel the requested operation), the requestor MUST use 575the “requestID” value that is returned in the provider’s response to identify the operation. 576See also the sections entitled “Async Capability” and “Results of asynchronous operations 577(normative)”.
5783.1.3.4 Results of asynchronous operations (normative)
579A provider that supports asynchronous execution of requested operations MUST maintain the 580status and results of each asynchronously executed operation during the period of time that the 581operation is executing and for some reasonable period of time after the operation completes. 582Maintaining this information allows the provider to respond to status requests. 583A provider that supports asynchronous execution of requested operations SHOULD publish out-of- 584band (i.e., make available to requestors in a manner that is not specified by this document) any limit 585on the how long after the completion of an asynchronous operation the provider will keep the status 586and results of that operation.
5873.1.4 Individual and batch requests
588A requestor generally requests each operation individually. SPMLv2 also defines a capability to 589batch requests. If the provider supports this batch capability, a requestor may group any number of 590requests (e.g., requests to ‘add’, ‘modify’ or ‘delete’) into a single request. 591Individual. The SPMLv2 core protocol allows a requestor to ask a provider to execute an individual 592operation. Each request that is part of the SPMLv2 Core XSD asks a provider to perform a single 593operation. 594Batch. SPMLv2 defines ‘batch’ as an optional operation that allows a requestor to combine any 595number of requests into a single request. See the Batch Capability section.
2407212bb8d0cf1f11a2b881ca263fc19f.doc Page 20 of 158 5963.2 Identifiers
597SPMLv2 uses several different types of identifiers.
598 An instance of {xsd:string} identifies a target. 599 A target identifier must be unique within the (namespace of the) provider.
600 An instance of {xsd:ID} identifies a request or an operation.
601 An instance of {PSOIdentifierType} identifies an object on a target. 602 An instance of {PSOIdentifierType} combines a target identifier with an object identifier. 603 The target identifier MUST be unique within the (namespace of the) provider. 604 The object identifier MUST be unique within the (namespace of the) target.
6053.2.1 RequestID (normative)
606RequestID in a request. A requestor SHOULD specify a reasonably unique value for the 607“requestID” attribute in each request. A requestID value need not be globally unique. A 608requestID value needs only to be sufficiently unique to identify each outstanding request. (That is, a 609requestor SHOULD specify as the value of “requestID” in each SPML request a value that is 610sufficiently unique to identify each request for which the requestor has not yet received the 611corresponding response.) 612A requestor that uses a transport protocol that is synchronous (such as SOAP/HTTP) MAY omit 613“requestID”. The synchronous nature of the transport protocol exchange itself ensures that the 614requestor can match the provider’s response to the request. (The provider’s response will contain 615any requestID that is necessary—for example, because the provider executes the requested 616operation asynchronously. See “RequestID in a response” immediately below.) 617RequestID in a response. A provider’s response to a request that specifies “requestID” MUST 618specify the same “requestID” value.
619A provider’s response to a request that does not specify a value for “requestID” MAY omit the 620“requestID” attribute UNLESS the provider executes the requested operation asynchronously.
2507212bb8d0cf1f11a2b881ca263fc19f.doc Page 21 of 158 621If the provider executes asynchronously (the operation that was described by) a request that 622omitted “requestID”, then the provider MUST generate a value that uniquely identifies the 623operation to the provider and (the provider MUST) specify this value as the value of the 624“requestID” attribute in the provider’s response. (This allows the requestor to cancel or to obtain 625the status of the operation that the provider is executing asynchronously. See Async Capability.)
6263.2.2 Target Identifier (normative)
627Each of a provider’s targets has a string identifier. Within a provider’s listTargets response, the 628“targetID” attribute of each
629TargetId is unique within provider. Each
6383.2.3 PSO Identifier (normative)
639PSO Identifier must be unique. A provider MUST ensure that each object’s PSO-ID is unique 640(within the namespace of the provider). Since every instance of {PSOIdentifierType} also 641specifies the target that contains the object (see the next topic immediately below), the value that 642identifies an object must be unique within the namespace of the target.
643TargetID. Any instance of {PSOIdentifierType} MAY specify “targetID”.
644 If the provider's
646 If the provider's
651containerID. Any instance of {PSOIdentifierType} MAY contain at most one 652
657ID. Any instance of {PSOIdentifierType} MAY specify “ID”. This depends on the profile that 658the requestor and provider have agreed to use. 659 The DSML Profile and the XML Schema Profile both specify that an instance of 660 {PSOIdentifierType} MUST specify "ID". The value of “ID” MUST uniquely identify an 661 object within the namespace of the target that “targetID” specifies.
2607212bb8d0cf1f11a2b881ca263fc19f.doc Page 22 of 158 662 Another profile may specify that an instance of {PSOIdentifierType} MAY omit "ID".
663Content depends on profile. The content of an instance of {PSOIdentifierType} depends on 664the profile that a requestor and provider agree to use. 665 Both the DSML profile and the XML Schema Profile specify that an instance of 666 {PSOIdentifierType} MUST have an "ID" attribute (see the topic immediately above). 667 Neither the DSML profile nor the XML Schema Profile specifies the content of an instance of 668 {PSOIdentifierType}.
669 Another profile may specify the content of an instance of {PSOIdentifierType}. 670Caution: PSO Identifier is mutable. A provider MAY change the PSO-ID for an object. For 671example, moving an organizational unit (OU) beneath a new parent within a directory service will 672change the distinguished name (DN) of the organizational unit. If the provider exposes the 673directory service DN as the object’s PSO-ID, then this operation will change the object’s PSO-ID. 674Recommend immutable PSO Identifier. A provider SHOULD expose an immutable value (such 675as a globally unique identifier or “guid”) as the PSO-ID for each object.
2707212bb8d0cf1f11a2b881ca263fc19f.doc Page 23 of 158 6763.3 Selection
6773.3.1 QueryClauseType
678SPMLv2 defines a {QueryClauseType} that is used to select objects. Each instance of 679{QueryClauseType} represents a selection criterion.
680{QueryClauseType} specifies no element or attribute. This type is a semantic marker. 681 Any capability may define elements of (types that extend) QueryClauseType. These 682 queryClauses allow a requestor to search for objects based on capability-specific data. 683 (For example, the SPML Reference Capability defines a
6943.3.2 Logical Operators
695The SPMLv2 Search Capability defines three logical operators that indicate how a provider should 696combine selection criteria. 697 The logical operator
2807212bb8d0cf1f11a2b881ca263fc19f.doc Page 24 of 158
7033.3.3 SelectionType
704SPMLv2 defines a {SelectionType} that is used in two different ways: 705 An instance of {SelectionType} may specify an element or attribute of an object. 706 For example, the
712SelectionType. An instance of {SelectionType} has a “path” attribute which value is an 713expression. An instance of {SelectionType} also contains a “namespaceURI” attribute that 714indicates (to any provider that recognizes the namespace) the language in which the value of the 715“path” attribute is expressed.
716Namespace Prefix Mappings. An instance of {SelectionType} may also contain any number 717of
7203.3.3.1 SelectionType in a Request (normative)
721namespaceURI. An instance of {SelectionType} MUST have a “namespaceURI” attribute. 722The value of the “namespaceURI” attribute MUST specify the XML namespace of a query 723language. (The value of the “path” attribute must be an expression that is valid in this query 724language—see below.)
725path. An instance of {SelectionType} MUST have a “path” attribute. The value of the “path” 726attribute MUST be an expression that is valid in the query language that the “namespaceURI” 727attribute specifies. The “path” value serves different purposes in different contexts.
2907212bb8d0cf1f11a2b881ca263fc19f.doc Page 25 of 158 728 Within a
730 Within a
735The value of the “path” attribute MUST be expressed in terms of elements or attributes that are 736valid (according to the schema of the target) for the type of object on which the provider is 737requested to operate.
738Namespace prefix mappings. An instance of {SelectionType} MAY contain any number of 739
740 Each
743 Each
7473.3.3.2 SelectionType Processing (normative)
748A provider MUST evaluate an instance of {SelectionType} in a manner that is appropriate to 749the context in which the instance of {SelectionType} occurs:
750 Within a
752 Within a
3007212bb8d0cf1f11a2b881ca263fc19f.doc Page 26 of 158 7603.3.3.3 SelectionType Errors (normative)
761A provider’s response (to a request that contains an instance of {SelectionType}) MUST 762specify an error if any of the following is true:
763 The provider does not recognize the value of the “namespaceURI” attribute as indicating an 764 expression language that the provider supports.
765 The provider does not recognize the value of the “path” attribute as an expression that is 766 valid in the language that the “namespaceURI” attribute specifies.
767 The provider does not recognize the value of a “path” attribute as an expression that refers to 768 a schema entity (i.e., element or attribute) that is valid according to the schema of the target. 769 The provider does not support the expression that SelectionType#path specifies. 770 (For example, the expression may be too complex or the expression may contain syntax that 771 the provider does not support.) 772In all of the cases described above, the provider’s response MUST specify either 773"error='unsupportedSelectionType'" or “error=’customError’”. 774 In general, the provider’s response SHOULD specify 775 “error=’unsupportedSelectionType’”. The provider’s response MAY also contain 776 instances of
777 However, a provider’s response MAY specify “error=’customError’” 778 if the provider is able to indicate more specifically the problem with the request.
7793.3.4 SearchQueryType
780SPMLv2 defines a {SearchQueryType} that is used to select objects on a target.
781targetID specifies the target on which to search for objects.
3107212bb8d0cf1f11a2b881ca263fc19f.doc Page 27 of 158 782basePsoID specifies the starting point for a query. Any
787The “scope” attribute restricts the search operation to one of the following: 788 To the base context itself. 789 To the base context and its direct children. 790 To the base context and any of its descendants.
7913.3.4.1 SearchQueryType in a Request (normative)
792targetID. A
797basePsoID. A
804scope. A
806 A requestor that wants the provider to search only the object identified by
816Open content. A
818 Any capability may define elements of (a type that extends) {QueryClauseType}. These 819 elements allow a requestor to select objects based on capability-defined data. 820 See the section entitled "QueryClauseType" above.
821 A
3207212bb8d0cf1f11a2b881ca263fc19f.doc Page 28 of 158 824 Logical Operators such as
8283.3.4.2 SearchQueryType Errors (normative)
829The response to a request that contains a
831 If the
833 If the "targetID" of the
834 A
837 A
3307212bb8d0cf1f11a2b881ca263fc19f.doc Page 29 of 158 8453.4 Transactional Semantics
846SPMLv2 specifies no transactional semantics. This specification defines no operation that implies 847atomicity. At the time of this writing, no core operation and no operation defined by one of 848SPMLv2’s standard capabilities defines a logical unit of work that can be committed or rolled back 849as a unit. 850Provisioning operations are notoriously difficult to undo and redo. For security reasons, many 851systems and applications will not allow certain identity management operations to be fully reversed 852or repeated. (More generally, support for transactional semantics suggests participation in 853externally managed transactions. These protocols are beyond the scope of this specification.) 854Any transactional semantics should be defined as a capability (or possibly as more than one 855capability). See the section entitled “Custom Capabilities”. A transactional capability would define 856optional operations that imply atomicity or allow the requestor to specify atomicity. 857Any provider that is able to support transactional semantics should then declare its support for such 858a capability as part of the provider’s response to the listTargets operation (as the provider would 859declare its support for any other capability).
8603.5 Operations
861The first subsection discusses the required Core Operations. 862Subsequent subsections discuss any optional operation that is associated with each of the standard 863capabilities: 864 Async Capability 865 Batch Capability 866 Bulk Capability 867 Password Capability 868 Reference Capability 869 Search Capability 870 Suspend Capability
8713.5.1 Core Operations
872Schema syntax for the SPMLv2 core operations is defined in a schema associated with the 873following XML namespace: urn:oasis:names:tc:SPML:2:0 [SPMLv2-CORE]. The Core XSD 874is included as Appendix A to this document.
875A conformant provider must implement all the operations defined in the Core XSD. For more 876information, see the section entititled Conformance. 877The SPMLv2 core operations include: 878 a discovery operation (listTargets) on the provider 879 several basic operations (add, lookup, modify, delete) that apply to objects on a target
8803.5.1.1 listTargets
881The listTargets operation enables a requestor to determine the set of targets that a provider makes 882available for provisioning and (the listTargets operation also enables a requestor) to determine the 883set of capabilities that the provider supports for each target. 884The subset of the Core XSD that is most relevant to the listTargets operation follows.
3407212bb8d0cf1f11a2b881ca263fc19f.doc Page 30 of 158
3507212bb8d0cf1f11a2b881ca263fc19f.doc Page 31 of 158 type="spml:CapabilitiesListType" minOccurs="0" maxOccurs="1"/>
885ListTargets must be synchronous. Because the requestor cannot know (at the time the requestor 886asks to listTargets) whether the provider supports asynchronous execution, the ‘listTargets’ 887operation must be synchronous. 888ListTargets is not batchable. Because the requestor cannot know (at the time the requestor asks 889the provider to listTargets) whether the provider supports the batch capability, a requestor must not 890nest a ‘listTargets’ request in a batch request.
8913.5.1.1.1 Request (normative)
892A requestor MUST send a
894Execution. A requestor MUST NOT specify “executionMode=‘asynchronous’” in a 895
3607212bb8d0cf1f11a2b881ca263fc19f.doc Page 32 of 158 903No required content. A
9053.5.1.1.2 Response (normative)
906A provider that receives a
914If a requestor specifies “executionMode=‘asynchronous’”, a provider MUST fail the operation 915with “error=’unsupportedExecutionMode’”. 916For more information, see the section entitled “Determining execution type”.
917Status. A
920Error. If the provider cannot return a list of its targets, the
923Target. A
925 If the
927 If the
929Any value of “targetID” MUST identify each target uniquely within the namespace of the 930provider.
931Schema. A
934Schema content. Each
935 If an
937 If an
940Each
942Schema ref. Each
3707212bb8d0cf1f11a2b881ca263fc19f.doc Page 33 of 158 944 The “ref” value MUST be a URI that uniquely identifies the schema. 945 The “ref” value MAY be a location of a schema document 946 (e.g. the physical URL of an XSD file). 947A requestor should ignore any “ref” attribute of an
949Supported Schema Entities. A target MAY declare as part of its
971SupportedSchemaEntity entityName. Each
977SupportedSchemaEntity targetID. A
3807212bb8d0cf1f11a2b881ca263fc19f.doc Page 34 of 158 991 If a
997A
1005Capability operations. An XML schema document that a capability “location” attribute 1006specifies MAY define operations. An XML schema document for a capability MUST define any 1007operation as a paired request and response such that both of the following are true: 1008 The (XSD type of the) request (directly or indirectly) extends {RequestType} 1009 The (XSD type of the) response (directly or indirectly) extends {ResponseType} 1010Capability appliesTo. A target may support a capability for all of the target’s supported schema 1011entities or only for a specific subset of the target’s supported schema entities. Each capability 1012element may specify any number of supported schema entities to which it applies. A capability that 1013does not specify a supported schema entity to which it applies must apply to every supported 1014schema entity.
1015A
1016A
1022Capability appliesTo entityName. Each
1029An
3907212bb8d0cf1f11a2b881ca263fc19f.doc Page 35 of 158 1035 MUST contain the same value as the “targetID” attribute 1036 of the
1039A
1045ReferenceDefinition. Each
1050ReferenceDefinition typeOfReference. Each
1052ReferenceDefinition schemaEntity. Each
1055 The
1058 The
1063ReferenceDefinition canReferTo. Each
1067 A
1070 A
1071 - If the
1073 - If the
1075 - If the
4007212bb8d0cf1f11a2b881ca263fc19f.doc Page 36 of 158 1078 (i.e., the
1080 - If the
1084ReferenceDefinition referenceDataType. Each
1089 A
1092 A
1093 - If the
1095 - If the
1097 - If the
1102 - If the
11063.5.1.1.3 Examples (non-normative)
1107In the following example, a requestor asks a provider to list the targets that the provider exposes for 1108provisioning operations.
4107212bb8d0cf1f11a2b881ca263fc19f.doc Page 37 of 158
4207212bb8d0cf1f11a2b881ca263fc19f.doc Page 38 of 158
1115The schema for target1 defines two entities: Account and Group. The schema for target1 1116declares both of these entities as supported schema entities. The provider declares that target1 1117supports the Bulk capability and Search capability for both Account and Group. The provider also 1118declares that target1 supports the Password, Suspend, and Reference capabilities for Account.
1119The schema for target2 defines three entities: Person, Organization and 1120OrganizationalUnit. The schema for target2 declares all of these entities as supported 1121schema entities. The provider declares that target2 supports the Bulk capability and Search 1122capability for both schema entities. The provider also declares that target2 supports the 1123Password, Suspend, and Reference capabilities for Person.
1124Reference Definitions. Within target1’s declaration of the Reference Capability for Account, 1125the provider also declares two types of references: owner and memberOf. The provider declares 1126that an instance of Account on target1 may refer to an instance of Person on target2 as its 1127owner. An instance of Account on target1 may also use a memberOf type of reference to refer 1128to an instance of Group on target1.
4307212bb8d0cf1f11a2b881ca263fc19f.doc Page 39 of 158 1129Within target2’s declaration of the Reference Capability for Person, the provider declares that a 1130Person on target2 may own an account on target1. (That is, an instance of Person on target2 1131may use an owns type of reference to refer to an instance of Account on target1.) Note that the 1132“owns” type of reference may be (but is not necessarily) an inverse of the “owner” type of 1133reference. For more information, please see the “Reference Capability” section. 1134NOTE: Subsequent examples within this section will build on this example, using the target 1135definitions returned in this example. Examples will also build upon each other. An object that is 1136created in the example of the add operation will be modified or deleted in later examples.
11373.5.1.2 add
1138The add operation enables a requestor to create a new object on a target and (optionally) to bind 1139the object beneath a specified parent object (thus forming a hierarchy of containment). 1140The subset of the Core XSD that is most relevant to the add operation follows.
4407212bb8d0cf1f11a2b881ca263fc19f.doc Page 40 of 158
11413.5.1.2.1 Request (normative)
1142A requestor MUST send an
1146TargetId. An
1154psoID. An
1158ContainerId. An
4507212bb8d0cf1f11a2b881ca263fc19f.doc Page 41 of 158 1167Data. An
1170CapabilityData. An
1174ReturnData. An
11883.5.1.2.2 Response (normative)
1189A provider that receives an
1198 If a
1202 If a
1207The
4607212bb8d0cf1f11a2b881ca263fc19f.doc Page 42 of 158 1209Execution. If an
1212Response. The provider must return to the requestor an
1213Status. The
1219 A
1222 A
1231 A
1241Error. If the provider cannot create the requested object, the
1244 An
1246 An
1249 An
4707212bb8d0cf1f11a2b881ca263fc19f.doc Page 43 of 158 1252 An
1255 An
1258 The element is missing an element or attribute that is required (according to the 1259 schema of the target) for the object to be added.
1260 A
1263 The element contains data that the provider does not recognize as valid according to 1264 the target schema for the type of object to be created.
1265 The provider does not recognize the content of a
12683.5.1.2.3 Examples (non-normative)
1269In the following example, a requestor asks a provider to add a new person. The requestor specifies 1270the attributes required for the Person schema entity (cn, firstName, lastName and fullName). 1271The requestor also supplies an optional email address for the person. This example assumes that 1272a container named “ou=Development, org=Example” already exists.
4807212bb8d0cf1f11a2b881ca263fc19f.doc Page 44 of 158 1277Next, the requestor asks a provider to add a new account. The requestor specifies a name for the 1278account. The requestor also specifies references to a Group that resides on target1 and to a 1279Person (from the first example in this section) that resides on target2.
12843.5.1.3 lookup
1285The lookup operation enables a requestor to obtain the XML that represents an object on a target. 1286The lookup operation also obtains any capability-specific data that is associated with the object. 1287The subset of the Core XSD that is most relevant to the lookup operation follows.
4907212bb8d0cf1f11a2b881ca263fc19f.doc Page 45 of 158
12883.5.1.3.1 Request (normative)
1289A requestor MUST send a
5007212bb8d0cf1f11a2b881ca263fc19f.doc Page 46 of 158 1291Execution. A requestor MAY specify a type of execution for a lookup operation. See Determining 1292execution type.
1293In general, a provider SHOULD NOT specify “executionMode=‘asynchronous’”. The reason 1294for this is that the status of a lookup should reflect the current state of a target object. If a lookup 1295operation is executed asynchronously then other operations are more likely to intervene.
1296PsoId. A
1298ReturnData. A
13123.5.1.3.2 Response (normative)
1313A provider that receives a
1316Execution. If an
1322Response. The provider must return to the requestor a
1323Status. The
1330 A
1333 A
5107212bb8d0cf1f11a2b881ca263fc19f.doc Page 47 of 158 1334 - If the
1342 A
1354Error. If the provider cannot return the requested object, the
1357 A
1358 A
1361 A
13623.5.1.3.3 Examples (non-normative)
1363In the following example, a requestor asks a provider to return the person object from the add 1364examples above. The requestor specifies the identifier for the person object.
1368The 5207212bb8d0cf1f11a2b881ca263fc19f.doc Page 48 of 158 Briggs”>
1374The
5307212bb8d0cf1f11a2b881ca263fc19f.doc Page 49 of 158 1386Next assume that the requestor specifies “returnData=’data’”.
1391Specifying “return=’data’” is advantageous if the requestor is not interested in capability- 1392specific data. Omitting capability-specific data may reduce the amount of work that the provider 1393must do in order to build the
13973.5.1.4 modify
1398The modify operation enables a requestor to change an object on a target. The modify operation 1399can change the schema-defined component of an object, any capability-specific data that is 1400associated with the object, or both. 1401Modify can change PSO Identifier. One important subtlety is that a modify operation may change 1402the identifier of the modified object. For example, assume that a provider exposes the 1403Distinguished Name (DN) as the identifier of each object on a target that represents a directory 1404service. In this case, modifying the object’s Common Name (CN) or moving the object beneath a 1405different Organizational Unit (OU) would change the object’s DN and therefore its PSO-ID. 1406In general, the PSTC recommends that each provider expose an immutable identifier as the PSO- 1407ID of each object. In the case of a target that represents a directory service, an immutable identifier 1408could be a Globally Unique IDentifier (GUID) that is managed by the directory service or it could be 1409any form of unique identifier that is managed by the provider. 1410The subset of the Core XSD that is most relevant to the modify operation follows.
5407212bb8d0cf1f11a2b881ca263fc19f.doc Page 50 of 158
5507212bb8d0cf1f11a2b881ca263fc19f.doc Page 51 of 158
14113.5.1.4.1 Request (normative)
1412A requestor MUST send a
1416PsoId. A
5607212bb8d0cf1f11a2b881ca263fc19f.doc Page 52 of 158 1418ReturnData. A
1433Modification. A
1440A requestor MUST use a
1443A
1446Modification component. The
1450Modification data. A requestor MUST specify as the content of the sub-element of a 1451
1453Modification capabilityData. A requestor MAY specify any number of
14603.5.1.4.2 Response (normative)
1461A provider that receives a
5707212bb8d0cf1f11a2b881ca263fc19f.doc Page 53 of 158 1463each requested
1465Execution. If an
1468Response. The provider must return to the requestor a
1469Status. The
1477 A
1480 A
1489 A
1501Error. If the provider cannot modify the requested object, the
1504 The
1506 A
5807212bb8d0cf1f11a2b881ca263fc19f.doc Page 54 of 158 1507 A
1508 A
1511 A
1514 A
15183.5.1.4.3 Examples (non-normative)
1519In the following example, a requestor asks a provider to modify the email address for an existing 1520Person object.
5907212bb8d0cf1f11a2b881ca263fc19f.doc Page 55 of 158 1528The provider returns a
6007212bb8d0cf1f11a2b881ca263fc19f.doc Page 56 of 158 1546The provider returns a
15503.5.1.5 delete
1551The delete operation enables a requestor to remove an object from a target. The delete operation 1552automatically removes any capability-specific data that is associated with the object. 1553The subset of the Core XSD that is most relevant to the delete operation follows.
6107212bb8d0cf1f11a2b881ca263fc19f.doc Page 57 of 158 15543.5.1.5.1 Request (normative)
1555A requestor MUST send a
1559PsoId. A
1561Recursive. A
1570CapabilityData. A
1574A
15763.5.1.5.2 Response (normative)
1577A provider that receives a
1580Execution. If an
1583CapabilityData. A provider MUST ignore any
1590Response. The provider must return to the requestor a
1591Status. A
6207212bb8d0cf1f11a2b881ca263fc19f.doc Page 58 of 158 1594Error. If the provider cannot delete the specified object, the
1597 The
1600 The
1602 The
1604 The
16073.5.1.5.3 Examples (non-normative)
1608In the following example, a requestor asks a provider to delete an existing Person object.
6307212bb8d0cf1f11a2b881ca263fc19f.doc Page 59 of 158 1613
16143.5.2 Async Capability
1615The Async Capability is defined in a schema associated with the following XML namespace: 1616urn:oasis:names:tc:SPML:2:0:async. The Async Capability XSD is included as Appendix B 1617to this document.
1618A provider that supports asynchronous execution of requested operations for a target SHOULD 1619declare that the target supports the Async Capability. A provider that does not support 1620asynchronous execution of requested operations MUST NOT declare that the target supports the 1621Async Capability. 1622IMPORTANT: The Async Capability does NOT define an operation specific to requesting 1623asynchronous execution. A provider that supports the Async Capability (for a schema entity of 1624which each object that the requestor desires to manipulate is an instance):
16251) MUST allow a requestor to specify “executionMode=‘asynchronous’”. 1626 The provider MUST NOT fail such a request with 1627 “error=’unsupportedExecutionMode’”. 1628 The provider MUST execute the requested operation asynchronously 1629 (if the provider executes the requested operation at all). 1630 See the section entitled “Requestor specifies asynchronous execution (normative)”. 16312) MAY choose to execute a requested operation aynchronously 1632 when the request does not specify the execution attribute. 1633 See the section entitled “Provider chooses asynchronous execution (normative)”. 1634The Async Capability also defines two operations that a requestor may use to manage another 1635operation that a provider is executing asynchronously: 1636 A status operation allows a requestor to check the status (and possibly results) of an operation. 1637 A cancel operation asks the provider to stop executing an operation. 1638Status. When a provider is executing SPML operations asynchronously, the requestor needs a way 1639to check the status of requests. The status operation allows a requestor to determine whether an 1640asynchronous operation has succeeded, has failed or is still pending. The status operation also 1641allows a requestor to obtain the output of an asynchronous operation. 1642Cancel. A requestor may also need to cancel an asynchronous operation. The cancel operation 1643allows a requestor to ask a provider to stop executing an ansynchronous operation. 1644IMPORTANT: Both the status and cancel operations must be executed synchronously. Because 1645both cancel and status operate on other operations that a provider is executing asynchronously, it 1646would be confusing to execute cancel or status asynchronously. For example, what would it mean 1647to get the status of a status operation? Describing the expected behavior (or interpreting the result) 1648of canceling a cancel operation would be difficult, and the chain could become quite long.
16493.5.2.1 cancel
1650The cancel operation enables a requestor to stop the execution of an asynchronous operation. (The 1651cancel operation itself must be synchronous.) 1652The subset of the Async Capability XSD that is most relevant to the cancel operation follows.
6407212bb8d0cf1f11a2b881ca263fc19f.doc Page 60 of 158
1653Cancel must be synchronous. Because ‘cancel’ operates on another operation that a provider is 1654executing asynchronously, the ‘cancel’ operation itself must be synchronous. (To do otherwise 1655permits unnecessary confusion. What should happen when one cancels a ‘cancel’ operation?) 1656Cancel is not batchable. Because the cancel operation must be synchronous, a requestor must 1657not nest a ‘cancel’ request in a batch request.
1658 Request (normative)
1659A requestor MUST send a
1661Execution. A
1664AsyncRequestID. A
16663.5.2.1.1 Response (normative)
1667A provider that receives a
1673Response. The provider must return to the requestor a
1674Status. A
6507212bb8d0cf1f11a2b881ca263fc19f.doc Page 61 of 158 1677Since the provider must execute a cancel operation synchronously, the
1680If the provider successfully canceled the specified operation, the
1683Error. If the provider cannot cancel the specified operation, the
1687o The “asyncRequestID” attribute of the
1689o The “asyncRequestID” attribute of the
16913.5.2.1.2 Examples (non-normative)
1692In order to illustrate the cancel operation, we must first execute an operation asynchronously. In the 1693following example, a requestor first asks a provider to delete a Person asynchronously.
17003.5.2.2 status
1701The status operation enables a requestor to determine whether an asynchronous operation has 1702completed successfully, has failed, or is still executing. The status operation also (optionally) 1703enables a requestor to obtain results of an asynchronous operation. (The status operation itself 1704must be synchronous.) 1705The subset of the Async Capability XSD that is most relevant to the status operation is shown 1706below for the convenience of the reader.
6607212bb8d0cf1f11a2b881ca263fc19f.doc Page 62 of 158 use="optional" default="false"/>
1707Status must be synchronous. The ‘status’ operation acts on other operations that a provider is 1708executing asynchronously. The ‘status’ operation itself therefore must be synchronous. (To do 1709otherwise permits unnecessary confusion. What should be the status of a ‘status’ operation?) 1710Status is not batchable. Because the status operation must be synchronous, a requestor must not 1711nest a ‘status’ request in a batch request.
17123.5.2.2.1 Request (normative)
1713A requestor MUST send a
1715Execution. A
1718AsyncRequestID. A
1723returnResults. A
17283.5.2.2.2 Response (normative)
1729A provider that receives a
6707212bb8d0cf1f11a2b881ca263fc19f.doc Page 63 of 158 1735ReturnResults. A
1739 If a
1741 If a
1743 If the
1746Response. The provider must return to the requestor a
1747Status. A
1751Since the provider must execute a status operation synchronously, the
1760Nested Responses. A
1763 A
1765 A
1767 - If the
1770 - If the
1774Nested Response RequestID. Each nested response MUST have a “requestID” attribute that 1775identifies the corresponding operation (within the namespace of the provider).
1776Nested Response Status. Each nested response MUST have a “status” attribute that 1777specifies the current state of the corresponding operation.
6807212bb8d0cf1f11a2b881ca263fc19f.doc Page 64 of 158 1778 A nested response that represents an operation that failed 1779 MUST specify “status=’failure’”. 1780 A nested response that represents an operation that succeeded 1781 MUST specify “status=’success’”. 1782 A nested response that represents an operation that the provider is still executing 1783 MUST specify “status=’pending’”.
1784Nested Response and ReturnResults. If a
1787 A nested response that specifies “status=’success’” MUST contain all the output that 1788 would have been contained in a synchronous response for the operation if the provider had 1789 executed the specified operation synchronously.
1790 A nested response that specifies “status=’pending’” MUST contain a subset of the output 1791 that would have been contained in a synchronous response for the operation if the provider had 1792 executed the specified operation synchronously.
1793Error. If the provider cannot obtain the status of the specified operation, the
1797 The “asyncRequestID” attribute of the
1799 The “asyncRequestID” attribute of the
18013.5.2.2.3 Examples (non-normative)
1802In order to illustrate the status operation, we must first execute an operation asynchronously. In this 1803example, a requestor first asks a provider to add a Person asynchronously.
1808If the original
6907212bb8d0cf1f11a2b881ca263fc19f.doc Page 65 of 158
1814The
1822The
1825Because the statusRequest specified “returnOutput=’true’”, the
1835The
1838Because the statusRequest specified “returnResults=’true’” and because the 1839
7007212bb8d0cf1f11a2b881ca263fc19f.doc Page 66 of 158 1841the
18443.5.3 Batch Capability
1845The Batch Capability is defined in a schema associated with the following XML namespace: 1846urn:oasis:names:tc:SPML:2:0:batch. The Batch Capability XSD is included as Appendix C 1847to this document. 1848A provider that supports batch execution of requested operations for a target SHOULD declare that 1849the target supports the Batch Capability. A provider that does not support batch execution of 1850requested operations MUST NOT declare that the target supports the Batch Capability. 1851The Batch Capability defines one operation: batch.
18523.5.3.1 batch
1853The subset of the Batch Capability XSD that is most relevant to the batch operation follows.
7107212bb8d0cf1f11a2b881ca263fc19f.doc Page 67 of 158
1854The batch operation combines any number of individual requests into a single request. 1855No transactional semantics. Using a batch operation to combine individual requests does not 1856imply atomicity (i.e., “all-or-nothing” semantics) for the group of batched requests. A requestor must 1857not assume that the failure of a nested request will undo a nested request that has already 1858completed. (See the section entitled “Transactional Semantics”.) 1859Note that this does not preclude a batch operation having transactional semantics—this is 1860unspecified. A provider (or some higher-level service) with the ability to undo specific operations 1861could support rolling back an entire batch if an operation nested within the batch fails.
1862Nested Requests. The Core XSD defines {RequestType} as the base type for any SPML 1863request. A requestor may group into a
1875Positional correspondence. The provider’s
7207212bb8d0cf1f11a2b881ca263fc19f.doc Page 68 of 158 1879Processing Types. A requestor can specify whether the provider executes the individual requests 1880one-by-one in the order that they occur within a
1882 When a
1885 When a
1890 When a
1895 When a
1900Overall error. When a requestor issues a
19053.5.3.1.1 Request (normative)
1906A requestor MUST send a
1908batchableRequest. A
1910A
1911A
1920processing. A requestor MAY specify a “processing” attribute in a batchRequest. If a 1921requestor specifies a “processing” attribute, the value of the “processing” attribute must be one 1922of the following: ‘sequential’ or ‘parallel’.
7307212bb8d0cf1f11a2b881ca263fc19f.doc Page 69 of 158 1923 A requestor who wants the provider to process the nested requests concurrently with each 1924 other MUST specify “processing=’parallel’”. 1925 A requestor who wants the provider to process the nested requests one-by-one and in the order 1926 that they appear MAY specify “processing=’sequential’”.
1927 A requestor who does not specify “processing” is implicitly asking the provider to process the 1928 nested requests sequentially.
1929onError. A requestor MAY specify an “onError” attribute in a batchRequest. If a requestor 1930specifies an “onError” attribute, the value of the “onError” attribute must be one of the following: 1931‘exit’ or ‘resume’. 1932 A requestor who wants the provider to continue processing nested requests whenever 1933 processing one of the nested requests will result in an error MUST specify 1934 “onError=’resume’”. 1935 A requestor who wants the provider to cease processing nested requests as soon as 1936 processing any of the nested requests encounters an error MAY specify “onError=’exit’”. 1937 A requestor who does not specify an “onError” attribute implicitly asks the provider to cease 1938 processing nested requests as soon as processing any of the nested requests encounters an 1939 error.
19403.5.3.1.2 Response (normative)
1941The provider must examine the content of the
1944processing. If a
1949If a
1953onError. The effect (on the provider’s behavior) of the “onError” attribute of a
1955 If a
7407212bb8d0cf1f11a2b881ca263fc19f.doc Page 70 of 158 1966 If a
1982 If a
1988 If a
1994Response. The provider MUST return to the requestor a
1995Status. The
2002nested Responses. The
7507212bb8d0cf1f11a2b881ca263fc19f.doc Page 71 of 158 2012 example, if the provider encountered an error processing an earlier nested request and the 2013 requestor specified both “processing=’sequential’” and “onError=’exit’”.) 2014 Each nested response that corresponds to a nested request for an operation that the provider 2015 actually executed MUST contain the same data that the provider would have returned (in the 2016 response for the corresponding operation) if the corresponding operation had been requested 2017 individually (rather than as part of a batch operation).
2018Error. If something (other than the behavior specified by the “onError“ setting with respect to 2019errors that occur in processing nested requests) prevents the provider from processing one or more 2020of the (operations described by the) nested requests within a
20233.5.3.1.3 Examples (non-normative)
2024In the following example, a requestor asks a provider to perform a series of operations. The 2025requestor asks the provider first to add a Person object to one target and then to add an Account 2026object to another target. (These are the first two examples of the add operation.)
7607212bb8d0cf1f11a2b881ca263fc19f.doc Page 72 of 158
7707212bb8d0cf1f11a2b881ca263fc19f.doc Page 73 of 158 2033
20343.5.4 Bulk Capability
2035The Batch Capability is defined in a schema associated with the following XML namespace: 2036urn:oasis:names:tc:SPML:2:0:bulk. This document includes the Bulk Capability XSD as 2037Appendix D. 2038The Bulk Capability defines two operations: bulkModify and bulkDelete. 2039A provider that supports the bulkModify and bulkDelete operations for a target SHOULD declare 2040that the target supports the Bulk Capability. A provider that does not support both bulkModify and 2041bulkDelete MUST NOT declare that the target supports the Bulk Capability.
20423.5.4.1 bulkModify
2043The subset of the Bulk Capability XSD that is most relevant to the bulkModify operation is shown 2044below for the convenience of the reader.
2070Modification. A 20743.5.4.1.2 Response (normative) 2075A provider that receives a 2079Response. The provider MUST return to the requestor a 2080Status. The 20933.5.4.1.3 Examples (non-normative) 2094In the following example, a requestor asks a provider to change every Person with an email 2095address matching [email protected] to have instead an email address of [email protected]. 21083.5.4.2 bulkDelete 2109The subset of the Bulk Capability XSD that is most relevant to the bulkDelete operation follows. 8007212bb8d0cf1f11a2b881ca263fc19f.doc Page 76 of 158 type="spmlbulk:BulkDeleteRequestType”/> 2120recursive. A 21243.5.4.2.2 Response (normative) 2125A provider that receives a 2128recursive. A provider MUST NOT delete any object that contains other objects unless the 2129 2130 If the 2133 If the 2138Response. The provider MUST return to the requestor an 2139Status. The 8107212bb8d0cf1f11a2b881ca263fc19f.doc Page 77 of 158 2147Error. If the provider was unable to delete every object that matched the specified query, then the 2148 21553.5.4.2.3 Examples (non-normative) 2156In the following example, a requestor asks a provider to delete every Person with an email address 2157matching [email protected]. 8207212bb8d0cf1f11a2b881ca263fc19f.doc Page 78 of 158 21673.5.5 Password Capability 2168The Password Capability is defined in a schema that is associated with the following XML 2169namespace: urn:oasis:names:tc:SPML:2:0:password. This document includes the 2170Password Capability XSD as Appendix E. 2171The Password Capability defines four operations: ‘setPassword, ‘expirePassword’, ‘resetPassword’ 2172and ‘validatePassword’. 2173 The ‘setPassword’ operation changes to a specified value the password that is associated with 2174 a specified object. The ‘setPassword’ allows a requestor to supply the current password (in 2175 case the target system or application requires it). 2176 The ‘expirePassword’ operation marks as no longer valid the password that is associated with a 2177 specified object. (Most systems or applications will require a user to change an expired 2178 password on the next login.) 2179 The ‘resetPassword’ operation changes to an unspecified value the password that is associated 2180 with a specified object. The ‘resetPassword’ operation returns the new password. 2181 The ‘validatePassword’ operation tests whether a specified value would be valid as the 2182 password for a specified object. (The ‘validatePassword’ operation allows a requestor to test a 2183 password value against the password policy for a system or application.) 2184A provider that supports the setPassword, expirePassword, resetPassword and validatePassword 2185operations for a target SHOULD declare that the target supports the Password Capability. A 2186provider that does not support all of the setPassword, expirePassword, resetPassword and 2187validatePassword operations MUST NOT declare that the target supports the Password Capability. 21883.5.5.1 setPassword 2189The setPassword operation enables a requestor to specify a new password for an object. 2190The subset of the Password Capability XSD that is most relevant to the setPassword operation 2191follows. 8307212bb8d0cf1f11a2b881ca263fc19f.doc Page 79 of 158 21923.5.5.1.1 Request (normative) 2193A requestor MUST send a 2195Execution. A 2197psoID. A 2200password. A 2202currentPassword. A 22043.5.5.1.2 Response (normative) 2205A provider that receives a 2208Execution. If an 2211Response. The provider must return to the requestor a 2214Error. If the provider cannot change (to the value that the “password” attribute specifies) the 2215password that is associated with the requested object, the 2219 The 22293.5.5.1.3 Examples (non-normative) 2230In the following example, a requestor asks a provider to set the password for a Person object. 8407212bb8d0cf1f11a2b881ca263fc19f.doc Page 80 of 158 22343.5.5.2 expirePassword 2235The expirePassword operation enables a requestor to mark as invalid the current password for an 2236object. 2237The subset of the Password Capability XSD that is most relevant to the expirePassword operation 2238follows. 22393.5.5.2.1 Request (normative) 2240A requestor MUST send a 2242Execution. A 2244psoID. A 2247remainingLogins. A 22493.5.5.2.2 Response (normative) 2250A provider that receives a 8507212bb8d0cf1f11a2b881ca263fc19f.doc Page 81 of 158 2252specified object exists, then the provider MUST mark as no longer valid the password that is 2253associated with the object that is specified by the 2254Execution. If an 2257Response. The provider must return to the requestor an 2265 The 22703.5.5.2.3 Examples (non-normative) 2271In the following example, a requestor asks a provider to expire the password for a Person object. 22753.5.5.3 resetPassword 2276The resetPassword operation enables a requestor to change (to an unspecified value) the 2277password for an object and to obtain that newly generated password value. 2278The subset of the Password Capability XSD that is most relevant to the resetPassword operation is 2279shown below for the convenience of the reader. 8607212bb8d0cf1f11a2b881ca263fc19f.doc Page 82 of 158 22803.5.5.3.1 Request (normative) 2281A requestor MUST send a 2284Execution. A 2286psoID. A 22893.5.5.3.2 Response (normative) 2290A provider that receives a 2294Execution. If an 2297Response. The provider must return to the requestor a 2306password. The 8707212bb8d0cf1f11a2b881ca263fc19f.doc Page 83 of 158 2311 2314 The 23213.5.5.3.3 Examples (non-normative) 2322In the following example, a requestor asks a provider to reset the password for a Person object. 23253.5.5.4 validatePassword 2326The validatePassword operation enables a requestor to determine whether a specified value would 2327be valid as the password for a specified object. 2328The subset of the Password Capability XSD that is most relevant to the validatePassword operation 2329follows. 8807212bb8d0cf1f11a2b881ca263fc19f.doc Page 84 of 158 23303.5.5.4.1 Request (normative) 2331A requestor MUST send a 2334Execution. A 2336psoID. A 2339password. A 23413.5.5.4.2 Response (normative) 2342A provider that receives a 2346Execution. If an 2349Response. The provider must return to the requestor a 2358valid. The 2366 The 8907212bb8d0cf1f11a2b881ca263fc19f.doc Page 85 of 158 2367 The target system or application returns an error (or throws an exception) when the provider 2368 tries to determine whether the specified value would be valid as the password that is associated 2369 with the specified object. 23703.5.5.4.3 Examples (non-normative) 2371In the following example, a requestor asks a provider to validate a value as a password for a 2372Person object. 9007212bb8d0cf1f11a2b881ca263fc19f.doc Page 86 of 158 2379 23803.5.6 Reference Capability 2381The Reference Capability is defined in a schema that is associated with the following XML 2382namespace: urn:oasis:names:tc:SPML:2:0:reference. This document includes the 2383Reference Capability XSD as Appendix F. 9107212bb8d0cf1f11a2b881ca263fc19f.doc Page 87 of 158 type="spmlref:ReferenceDefinitionType"/> 2384The Reference Capability defines no operation. Instead, the Reference Capability allows a provider 2385to declare, as part of each target, which types of objects support references to which other types of 2386objects. The XML representations of references flow through the core operations as capability- 2387specific data. 2388 In order to create an object with references, a requestor specifies capability-specific data to the 2389 core ‘add’ operation. 2390 In order to add, remove or replace references to an object, a requestor specifies capability- 2391 specific data to the core ‘modify’ operation. 2392 In order to obtain references for an object, a requestor examines capability-specific data 2393 returned as output by the core ‘add’, ‘lookup’ and ‘search’ operations. 2394Motivation. Defining a standard capability for references is important for several reasons. 2395 Managing references to other objects can be a very important part of managing objects. 2396 Object references to other objects present a scalability problem. 2397 Object references to other objects present an integrity problem. 2398Provisioning systems must often list, create, and delete connections between objects 2399in order to manage the objects themselves. In some cases, a provisioning system 2400must manage data that is part a specific connection (e.g., in order to specify 2401the expiration of a user’s membership in a group) – see the discussion of “Reference Data” below. 2402Because connections to other objects can be very important, it is important to be able to represent 2403such connections generically (rather than as something specific to each target schema). 2404The reference capability enables a requestor to manage an object’s references independent of the 2405object’s schema. This is particularly important in the cases where a provider allows references to 2406span targets. For example, a provisioning system must often maintain knowledge about which 2407Persons own which accounts. In such cases, an Account object (that is contained by one target) 2408may refer to a Person object (that is contained by another target) as its owner. 2409Scale is another significant aspect of references. The number of connections between objects may 2410be an order of magnitude more than the number of objects themselves. Unconditionally including 2411reference information in the XML representation of each object could greatly increase the size of 2412that object’s XML representation. Imagine, for example, that each Account may refer to multiple 2413Groups (or that a Group may refer to each of its members). 2414Defining reference as an optional capability (and allowing references to be omitted from each 2415object’s schema) does two things. First, this allows a requestor to exclude an object’s references 2416from the XML representation of each object (since a requestor can control which capability-specific 2417data are included). Second, this allows providers to manage references separately from schema- 2418defined attributes (which may help a provider cope with the scale of connections). 2419The ability to manage references separately from schema-defined data may also help providers to 2420maintain the integrity of references. In the systems and applications that underly many provisioning 2421target, deleting an object A may not delete another object B’s reference to object A. Allowing a 2422provider to manage references separately allows the provider to control such behavior (and 2423perhaps even to prevent the deletion of object A when another object B still refers to object A). 9207212bb8d0cf1f11a2b881ca263fc19f.doc Page 88 of 158 24243.5.6.1 Reference Definitions 2425Reference Definitions. A provider declares each type of reference that a particular target supports 2426(or declares each type of reference that a particular supported schema entity on a target supports) 2427as an instance of reference definition. 2428A provider’s 9307212bb8d0cf1f11a2b881ca263fc19f.doc Page 89 of 158 2470in a target schema. A 24763.5.6.2 References 2477Reference Data. SPMLv2 allows each reference (i.e., each instance of ReferenceType) to contain 2478additional reference data. Most references between objects require no additional data, but this 2479supports cases in which a reference from one object to another may carry additional information “on 2480the arrow” of the relationship. For example, a RACF user’s membership in a particular RACF group 2481carries with it the additional information of whether that user has the ADMINISTRATOR or 2482SPECIAL privilege within that group. Several other forms of group membership carry with them 2483additional information about the member’s expiration. See the section entitled “Complex 2484References” below. 2485Search. A requestor can search for objects based on reference values using the 2486 24913.5.6.3 Complex References 2492The vast majority of reference types are simple: that is, one object’s reference to another object 2493carries no additional information. However certain types of references may support additional 2494information that is specific to a particular reference. For example, when a user is assigned to one 2495or more Entrust GetAccess Roles, each role assignment has a start date and an end date. We 2496describe a reference that contains additional data (that is specific to the reference) as “complex”. 2497Example: RACF Group Membership is another example of a complex type of reference. Each 2498RACF group membership carries with it additional data about whether the user has the SPECIAL, 2499AUDITOR, or OPERATIONS privileges in that group. 2500 Group-SPECIAL gives a group administrator control over all profiles within the group 2501 Group-AUDITOR allows a user to monitor the use of the group's resources 2502 Group-OPERATIONS allows a user to perform maintenance operations 2503 on the group's resources 2504For purposes of this example, let us represent these three group-specific privileges as attributes of 2505an XML type called “RacfGroupMembershipType”. Suppose that the XML Schema for such a type 2506looks like the following: 9407212bb8d0cf1f11a2b881ca263fc19f.doc Page 90 of 158 25113.5.6.3.1 Using Reference Data 2512The simplest way to model a complex reference such as RACF Group membership is to represent 2513the additional information as arbitrary reference data. The 9507212bb8d0cf1f11a2b881ca263fc19f.doc Page 91 of 158 25323.5.6.3.2 Relationship Objects 2533The fact that capabilities cannot apply to references does not prevent a provider from offering this 2534kind of rich function. There is an elegant way to represent a complex relationship that allows a 2535requestor to operate directly on the relationship itself. A provider may model a complex relationship 2536between two objects as a third object that refers to each of the first two objects. 2537This approach is analogous to a “linking record” in relational database design. In the “linking 2538record” approach, the designer “normalizes” reference relationships into a separate table. Each 2539row in a third table connects a row from one table to a row in another table. This approach allows 2540each relationship to carry additional information that is specific to that relationship. Data specific to 2541each reference are stored in the columns of the third table. Even when relationships do not need to 2542carry additional information, this approach is often used when two objects may be connected by 2543more than one instance of the same type of relationship, or when relationships are frequently added 2544or deleted and referential integrity must be maintained. 2545Rather than have an object A refer to an object B directly, a third object C refers to object A and to 2546object B. Since object C represents the relationship itself, object C refers to object A as its 2547“fromObject” and object C refers to object B as its “toObject”. 2548A provider that wants to treat each instance of a (specific type of) relationship as an object does so 2549by defining a schema entity to contain the additional information (specific to that type of 2550relationship) in the schema for a target. The provider then declares two types of references that 2551apply to that schema entity: a “fromObject” type of reference and a “toObject” type of reference. 2552The provider may also declare that certain capabilities apply to that schema entity. This model 2553allows a requestor to operate conveniently on each instance of a complex relationship. 9607212bb8d0cf1f11a2b881ca263fc19f.doc Page 92 of 158 2554For example, suppose that a provider models as a schema entity a type of relationship that has an 2555effective date and has an expiration date. As a convenience to requestors, the provider might 2556declare that this schema entity (that is, the “linking” entity) supports the Suspend Capability. The 2557‘suspend’ and ‘resume’ operations could manipulate the expiration date and the effective date 2558without the requestor having to understand the structure of that schema entity. This convenience 2559could be very valuable where the attribute values or element content that are manipulated have 2560complex syntax, special semantics or implicit relationships with other elements or attributes. 2561The following example shows how a provider’s listTargetsResponse might reflect this approach. 2562The sample schema for the “RACF” target is very simple (for the sake of brevity). 9707212bb8d0cf1f11a2b881ca263fc19f.doc Page 93 of 158 25693.5.6.3.3 Bound Relationship Objects 2570One robust variation of independent relationship objects is to bind each relationship object beneath 2571one of the objects it connects. For example, one could bind each instance of 2572RacfGroupMembership beneath the instance of RacfUserProfile that would otherwise be the 2573“fromUser”. That way, deleting an instance of RacfUserProfile also deletes all of its 2574RacfGroupMemberships. This modeling approach makes clear that the relationship belongs with 2575the “fromObject” and helps to prevent orphaned relationship objects. 2576The next example illustrates bound relationship objects. 9807212bb8d0cf1f11a2b881ca263fc19f.doc Page 94 of 158 9907212bb8d0cf1f11a2b881ca263fc19f.doc Page 95 of 158 25773.5.7 Search Capability 2578The Search Capability is defined in a schema associated with the following XML namespace: 2579urn:oasis:names:tc:SPML:2:0:search. This document includes the Search Capability XSD 2580as Appendix G. 2581The Search Capability defines two operations: search and iterate. The search and iterate 2582operations together allow a requestor to obtain in a scalable manner the XML representation of 2583every object that matches specified selection criteria. The search operation returns in its response a 2584first set of matching objects. Each iterate operation returns more matching objects. 2585A provider that supports the search and iterate operations for a target SHOULD declare that the 2586target supports the Search Capability. A provider that does not support both search and iterate 2587MUST NOT declare that the target supports the Search Capability. 2588Resource considerations. A provider must limit the size and duration of its search results (or that 2589provider will exhaust available resources). A provider must decide: 2590 How large of a search result the provider will select on behalf of a requestor. 2591 How large of a search result the provider will queue on behalf of a requestor 2592 (so that the requestor may iterate the search results). 2593 For how long a time the provider will queue a search result on behalf of a requestor. 2594These decisions may be governed by the provider’s implementation, by its configuration, or by 2595runtime computation. 2596A provider that wishes to never to queue search results may return every matching object (up to the 2597provider’s limit and up to any limit specified by the requestor) in the search response. Such a 2598provider would never return an iterator, and would not need to support the iterate operation. The 2599disadvantage is that, without an iterate operation, a provider’s search capability either is limited to 2600small results or produces large search responses. 2601A provider that wishes to support the iterate operation must store (or somehow queue) the objects 2602selected by a search operation until the requestor has a chance to iterate those results. (That is, a 2603provider must somehow queue the objects that matched the criteria of a search operation and that 2604were not returned in the search response.) 2605If all goes well, the requestor will continue to iterate the search result until all of the objects have 2606been sent to the requestor. This allows the provider to free any resource that is still associated with 2607the search result. However, if something goes wrong (or if the requestor changes its mind) the 2608requestor may not iterate the search result in a timely manner. In fact, the requestor may never 2609iterate the search result completely. 2610A provider cannot queue search results indefinitely. The provider must eventually release the 2611resources associated with a search result. (Put differently, a provider must eventually expire any 2612iterator that the provider returns to a requestor.) Otherwise, the provider may run out of resources. 2613Providers should carefully manage the resources associated with search results. For example: 2614 A provider may define a timeout interval that specifies the maximum time between iterate 2615 requests. If a requestor does not request an iterate operation within this interval, the provider 2616 will release the resources associated with the search result. This invalidates any iterator that 2617 represents this search result. 10007212bb8d0cf1f11a2b881ca263fc19f.doc Page 96 of 158 2618 A provider may also define an overall result lifetime that specifies the maximum length of time 2619 to retain a search result. After this amount of time has passed, the provider will release the 2620 search result. 2621 A provider may also wish to enforce an overall limit on the resources available to queue search 2622 results, and to adjust its behavior (or even to refuse search requests) accordingly. 2623 To prevent denial of service attacks, the provider should not allocate any resource on behalf of 2624 a requestor until that requestor is properly authenticated (see the section entitled “Security and 2625 Privacy Considerations”). 26263.5.7.1 search 2627The search operation obtains every object that matches a specified query. 2628The subset of the Search Capability XSD that is most relevant to the search operation follows. 10107212bb8d0cf1f11a2b881ca263fc19f.doc Page 97 of 158 use="optional" default="everything"/> 2629The 2631If the search operation is successful but selects no matching object, the 26523.5.7.1.1 Request (normative) 2653A requestor MUST send a 10207212bb8d0cf1f11a2b881ca263fc19f.doc Page 98 of 158 2655Execution. A 2657query. A 2660ReturnData. A 2674maxSelect. A 2676IncludeDataForCapability. A 26903.5.7.1.2 Response (normative) 2691A provider that receives a 2696Execution. If an 10307212bb8d0cf1f11a2b881ca263fc19f.doc Page 99 of 158 2699A provider SHOULD execute a search operation synchronously if it is possible to do so. (The 2700reason for this is that the result of a search should reflect the current state of each matching object. 2701Other operations are more likely to intervene if a search operation is executed asynchronously.) 2702Response. The provider MUST return to the requestor a 2703Status. The 2709 If the provider encountered an error in selecting any object that matched the specified 2712Pso. The 2713 If the 2716 If the 2718 If the 2720PSO and ReturnData. Each 2723 A 2726 A 2735 A 10407212bb8d0cf1f11a2b881ca263fc19f.doc Page 100 of 158 2741 - Otherwise, if the 2747PSO capability-specific data and IncludeDataForCapability. A 2750 The 2751 The 2755 The 2758A 2760iterator. A 2761 If the 2764 If the 2767 If the 2769 If the 2771iterator ID. An 2772The value of the “ID” attribute uniquely identifies the 2776The “ID” attribute is (intended to be) opaque to the requestor. A requestor cannot ‘lookup’ an 2777 2778Error. If the 10507212bb8d0cf1f11a2b881ca263fc19f.doc Page 101 of 158 2781The section entitled "SearchQueryType Errors (normative)" describes errors specific to a request 2782that contains a 2784 If the number of objects that matched the 27883.5.7.1.3 Examples (non-normative) 2789In the following example, a requestor asks a provider to search for every Person with an email 2790address matching [email protected]. 10607212bb8d0cf1f11a2b881ca263fc19f.doc Page 102 of 158 27983.5.7.2 iterate 2799The iterate operation obtains the next set of objects from the result set that the provider selected for 2800a search operation. (See the description of the search operation above.) 2801The subset of the Search Capability XSD that is most relevant to the iterate operation follows. 2802An iterateRequest receives an iterateResponse. A requestor supplies the 2806The 10707212bb8d0cf1f11a2b881ca263fc19f.doc Page 103 of 158 2814provider to commit resources. See the “Resource Considerations” topic earlier in this Search 2815Capability section. 2816Batch responses also tend to be large. Batch operations are typically asynchronous, so storing the 2817results of asynchronous batch operations imposes on providers a resource burden similar to that of 2818search results. Allowing a requestor to nest a search request or an iterate request within a batch 2819request would aggravate the resource problem, requiring a provider to store more information in 2820larger chunks for a longer amount of time. 2821The iterate operation must be executed synchronously. The provider is already queuing the 2822search set (every object beyond those returned in the first search response), so it is unreasonable 2823for a requestor to ask the provider to queue the results of a request for the next item in the search 2824set. 2825Furthermore, asynchronous iteration would complicate the provider’s maintenance of the search 2826set. Since a provider could never know that the requestor had processed the results of an 2827asynchronous iteration, the provider would not know when to increment its position in the search 2828set. In order to support asynchronous iteration both correctly and generally, a provider would have 2829to maintain a version of every search set for each iteration of that search set. 28303.5.7.2.1 Request (normative) 2831A requestor MUST send an 2836Execution. An 2839iterator. An 28413.5.7.2.2 Response (normative) 2842A provider that receives a 2847Response. The provider MUST return to the requestor an 2848Status. The 10807212bb8d0cf1f11a2b881ca263fc19f.doc Page 104 of 158 2854 If the provider encountered an error in returning (the XML that represents) the next object from 2855 the status set that the 2857Pso. The 2858 If the 2861 If the 2864 If the 2866PSO and ReturnData. Each 2869 A 2872 A 2881 A 2893PSO capability-specific data and IncludeDataForCapability. A 2896 The 10907212bb8d0cf1f11a2b881ca263fc19f.doc Page 105 of 158 2897 The original 2901 The original 2904A 2906iterator. A 2908 If the 2911 If the 2914 If the 2916iterator ID. An 2917The value of the “ID” attribute uniquely identifies the 2921The “ID” attribute is (intended to be) opaque to the requestor. A requestor cannot ‘lookup’ an 2922 2923Error. If the 2926The 2928 If the provider does not recognize the 2930 If the provider does not recognize the 2932The 2934 If an 11007212bb8d0cf1f11a2b881ca263fc19f.doc Page 106 of 158 29393.5.7.2.3 Examples (non-normative) 2940In order to illustrate the ‘iterate’ operation, we first need a search operation that returns more than 2941one object. In the following example, a requestor asks a provider to search for every Person with an 2942email address that starts with the letter “j”. 11107212bb8d0cf1f11a2b881ca263fc19f.doc Page 107 of 158 2958To get the final matching object, the requestor again supplies the 29663.5.7.3 closeIterator 2967The closeIterator operation tells the provider that the requestor has no further need for the search 2968result that a specific 2969A requestor should send a 11207212bb8d0cf1f11a2b881ca263fc19f.doc Page 108 of 158 2975A closeIteratorRequest receives a closeIteratorResponse. A requestor supplies as input to a 2976 29973.5.7.3.1 Request (normative) 2998A requestor SHOULD send a 3001Execution. A 11307212bb8d0cf1f11a2b881ca263fc19f.doc Page 109 of 158 3003“executionMode=‘synchronous’” or (a requestor MUST) omit the “executionMode” 3004attribute of the 3005iterator. A 30093.5.7.3.2 Response (normative) 3010A provider that receives a 3016Response. The provider MUST return to the requestor a 3017Status. The 3020 If the provider successfully released the search result that the 3022 If the provider encountered an error in releasing the search result that the 3024Error. If the 3027The 3029 If the provider does not recognize the 3031 If the provider does not recognize the 3033The 3035 If a 11407212bb8d0cf1f11a2b881ca263fc19f.doc Page 110 of 158 30413.5.7.3.3 Examples (non-normative) 3042In order to illustrate the ‘closeIterator’ operation, we first need a search operation that returns more 3043than one object. In the following example, a requestor asks a provider to search for every Person 3044with an email address that starts with the letter “j”. 11507212bb8d0cf1f11a2b881ca263fc19f.doc Page 111 of 158 3055 30563.5.8 Suspend Capability 3057The Suspend Capability is defined in a schema associated with the following XML namespace: 3058urn:oasis:names:tc:SPML:2:0:suspend. This document includes the Suspend Capability 3059XSD as Appendix H. 3060The Suspend Capability defines three operations: ‘suspend’, ‘resume’ and ‘active’. 3061 The ‘suspend’ operation disables an object (immediately or on a specified date). 3062 The ‘resume’ operation re-enables an object (immediately or on a specified date). 3063 The ‘active’ operation tests whether an object is currently suspended. 3064The ‘suspend’ operation disables an object persistently (rather than transiently). The suspend 3065operation is intended to revoke the privileges of an account, for example, while the authorized user 3066of the account is on vacation. 3067The ‘resume’ operation re-enables an object persistently. One might use the resume operation to 3068restore privileges for an account, for example, when the authorized user of the account returns from 3069vacation. 3070A provider that supports the ‘suspend’, ‘resume’ and ‘active’ operations for a target SHOULD 3071declare that the target supports the Suspend Capability. A provider that does not support all of 3072‘suspend’, ‘resume’ and ‘active’ MUST NOT declare that the target supports the Suspend 3073Capability. 3074NOTE: Both the suspend and resume operations are idempotent. Are requestor should be able to 3075suspend (or to resume) the same object multiple times without error. 3076Search. A requestor can search for objects based on enabled state using the 30813.5.8.1 suspend 3082The suspend operation enables a requestor to disable an object. 3083The subset of the Suspend Capability XSD that is most relevant to the suspend operation follows. 11607212bb8d0cf1f11a2b881ca263fc19f.doc Page 112 of 158 30843.5.8.1.1 Request (normative) 3085A requestor MUST send a 3089psoID. A 3092EffectiveDate. A 30963.5.8.1.2 Response (normative) 3097A provider that receives a 3100If the 3102 If the “effectiveDate” of the 3107 If the “effectiveDate” of the 3114Response. The provider must return to the requestor a 3117Error. If the provider cannot create the requested object, the 3120 The 3121 The 11707212bb8d0cf1f11a2b881ca263fc19f.doc Page 113 of 158 3122The provider MAY return an error if any of the following is true: 3123 The 31263.5.8.1.3 Examples (non-normative) 3127In the following example, a requestor asks a provider to suspend an existing Person object. 31343.5.8.2 resume 3135The resume operation enables a requestor to re-enable an object that has been suspended. (See 3136the description of the suspend operation above.) 3137The subset of the Suspend Capability XSD that is most relevant to the resume operation follows. 31383.5.8.2.1 Request (normative) 3139A requestor MUST send a 11807212bb8d0cf1f11a2b881ca263fc19f.doc Page 114 of 158 3141Execution. A requestor MAY specify a type of execution for a ‘resume’ operation. See Determining 3142execution type. 3143psoID. A 3146EffectiveDate. A 31503.5.8.2.2 Response (normative) 3151A provider that receives a 3154If the 3156 If the “effectiveDate” of the 3161 If the “effectiveDate” of the 3168Response. The provider must return to the requestor a 3171Error. If the provider cannot enable the requested object, the 3174 The 3175 The 3177 The 11907212bb8d0cf1f11a2b881ca263fc19f.doc Page 115 of 158 31803.5.8.2.3 Examples (non-normative) 3181In the following example, a requestor asks a provider to resume an existing Person object. 31873.5.8.3 active 3188The active operation enables a requestor to determine whether a specified object has been 3189suspended. (See the description of the suspend operation above.) 3190The subset of the Suspend Capability XSD that is most relevant to the active operation follows. 31913.5.8.3.1 Request (normative) 3192A requestor MUST send an 12007212bb8d0cf1f11a2b881ca263fc19f.doc Page 116 of 158 3194Execution. A requestor MAY specify a type of execution for an active operation. See Determining 3195execution type. 3196psoID. A 31993.5.8.3.2 Response (normative) 3200A provider that receives a 3203Execution. If an 3206Response. The provider must return to the requestor an 3210active. An 3213 If the specified object is suspended, the 3215 If the specified object is not suspended, the 3221 The 32223.5.8.3.3 Examples (non-normative) 3223In the following example, a requestor asks a provider whether a Person object is active. 12107212bb8d0cf1f11a2b881ca263fc19f.doc Page 117 of 158 3229The provider returns an 12207212bb8d0cf1f11a2b881ca263fc19f.doc Page 118 of 158 32323.6 Custom Capabilities 3233The features of SPMLv2 that allow the PSTC to define optional operations as part of standard 3234capabilities are open mechanisms that will work for anyone. An individual provider (or any third 3235party) can define a custom capability that integrates with SPMLv2. Whoever controls the 3236namespace of the capability controls the extent to which it can be shared. Each provider 3237determines which capabilities are supported for which types of objects on which types of targets. 3238The SPMLv2 capability mechanism is extensible. Any party may define additional capabilities. A 3239provider declares its support for a custom capability in exactly the same way that it declares support 3240for a standard capability: as a target 12307212bb8d0cf1f11a2b881ca263fc19f.doc Page 119 of 158 124 32504 Conformance (normative) 32514.1 Core operations and schema are mandatory 3252A conformant provider MUST support the elements, attributes, and types defined in the SPMLv2 3253Core XSD. This includes all the core operations and protocol behavior. 3254Schema syntax for the SPMLv2 core operations is defined in a schema that is associated with the 3255following XML namespace: urn:oasis:names:tc:SPML:2:0. This document includes the Core 3256XSD as Appendix A. 32574.2 Standard capabilities are optional 3258A conformant provider SHOULD support the schema and operations defined by each standard 3259capability of SPMLv2. 3260A conformant provider MUST NOT expose an operation that competes with (i.e., whose functions 3261overlap those of) an operation defined by a standard capability of SPMLv2 3262UNLESS all of the following are true: 3263 The provider MUST define the competing operation in a custom capability. 3264 Every target (and every schema entity on a target) that supports the provider’s custom 3265 capability MUST also support the standard capability. 32664.3 Custom capabilities 3267A conformant provider MUST use the custom capability mechanism of SPMLv2 to expose any 3268operation beyond those specified by the core and standard capabilities of SPMLv2. 3269A conformant provider MAY support any custom capability that conforms to SPMLv2. 3270Custom capabilities must conform. Any operation that a custom capability defines MUST be 3271defined as a request-response pair such that all of the following are true: 3272 The request type (directly or indirectly) extends {RequestType} 3273 The response type is {ResponseType} or (the response type directly or indirectly) extends 3274 {ResponseType}. 3275Custom capabilities should not conflict. Since each custom capability is defined in its own 3276namespace, an element or attribute in the XML schema that is associated with a custom capability 3277SHOULD NOT not conflict with (i.e., SHOULD NOT redefine and SHOULD NOT otherwise change 3278the definition of) any element or attribute in any other namespace: 3279 A custom capability MUST NOT conflict with the Core XSD of SPMLv2. 3280 A custom capability MUST NOT conflict with any standard capability of SPMLv2. 3281 A custom capability SHOULD NOT conflict with another custom capability. 12507212bb8d0cf1f11a2b881ca263fc19f.doc Page 120 of 158 126 32825 Security and privacy considerations 3283This section identifies scenarios that compromise security and privacy. Scenarios such as these 3284should be considered when implementing an SPML-based system. This section is purely 3285informative. Each implementer must evaluate the risks and select appropriate safeguards. 32865.1 Threat model 3287We assume here that an adversary has access to the communication channel between the SPML 3288requestor and provider and is able to interpret, insert, delete and modify messages or parts of 3289messages. 32905.1.1 Unauthorized disclosure 3291SPML does not specify any inherent mechanisms for confidentiality of the messages exchanged 3292between actors. Therefore, an adversary could observe the messages in transit. Disclosure of the 3293information contained in SPML messages may constitute a violation of certain security policies. 3294Disclosure of provisioning data may have significant repercussions. In the commercial sector, the 3295consequences of unauthorized disclosure of personal data may range from public embarrassment 3296of the corporation to imprisonment of and large fines for its officers. Statutory penalties are 3297especially high in the case of medical or financial data. 3298Confidentiality mechanisms (see below) address unauthorized disclosure. 32995.1.2 Message Replay 3300A message replay attack is one in which an adversary records and replays legitimate messages 3301between SPML actors. This attack may lead to denial of service, impersonation, or simply out-of- 3302date information. 3303An implementer must use message “freshness” mechanisms in order to prevent replay attacks. 3304Note that message encryption does not mitigate a replay attack since an attacker merely replays 3305(and does not need to understand) the message. 33065.1.2.1 Message insertion 3307A message insertion attack is one in which an adversary inserts messages in the sequence of 3308messages between SPML actors. 3309The solution to a message insertion attack is to use mutual authentication and a message 3310sequence integrity mechanism between the actors. It should be noted that just using SSL mutual 3311authentication is not sufficient. SSL mutual authentication proves only that the other party is the one 3312identified by the subject of the X.509 certificate. In order to be effective, it is necessary to confirm 3313that the certificate subject is authorized to send the message. 33145.1.2.2 Message deletion 3315A message deletion attack is one in which the adversary deletes messages in the sequence of 3316messages between SPML actors. Message deletion may lead to denial of service. However, a 12707212bb8d0cf1f11a2b881ca263fc19f.doc Page 121 of 158 3317properly designed SPML system should not trigger false provisioning on as the status of a message 3318deletion attack. 3319The solution to a message deletion attack is to use a message integrity mechanism between the 3320actors. 33215.1.2.3 Message modification 3322If an adversary can intercept a message and change its contents, then the adversary may be able 3323to alter a provisioning request. Message integrity mechanisms can prevent a message modification 3324attack from succeeding. 33255.2 Safeguards 33265.2.1 Authentication 3327Authentication provides the means for one party in a transaction to determine the identity of the 3328other party in the transaction. Authentication may be unilateral (in one direction) or it may be 3329bilateral (on both sides). 3330Given the sensitive nature of many provisioning requests and systems it is important for a 3331requestor (client) to authenticate the provider (server). Otherwise, there is a risk that an adversary 3332could act as a provider, leading to a possible security violation. 3333It is equally important for a provider to authenticate the requestor, to assess the level of trust 3334between them and to determine whether the requestor is authorized to request each operation. 3335Many different techniques may be used to provide authentication, such as co-located code, a 3336private network, a VPN or digital signatures. Authentication may also be performed as part of the 3337communication protocol that is used to exchange the requests. When authentication is performed 3338as part of the protocol, authentication may be performed for each session or for each message. 33395.2.2 Confidentiality 3340Confidentiality mechanisms ensure that only the desired recipients can read the contents of a 3341message. The primary concern is confidentiality during transmission. 33425.2.2.1 Communication confidentiality 3343In some environments it is deemed good practice to treat all data within a provisioning domain as 3344confidential. In other environments certain parts of the service schema and required attributes may 3345be published. Regardless of the approach, the security of the provisioning system as a whole 3346should not depend in any way on the secrecy of the service, on the secrecy of the service’s 3347provider, nor on the secrecy of the service’s request data schema. 3348Any security concern or requirement related to transmitting or exchanging SPML documents lies 3349outside the scope of the SPML standard. Ensuring the integrity and confidentiality of provisioning 3350requests is generally important, but the implementer must determine which mechanisms are 3351appropriate for each implementation environment. 3352A confidentiality mechanism, such as SSL, can provide communications confidentiality. However, a 3353point-to-point scheme like SSL may lead to other vulnerabilities if one of the end-points is 3354compromised. 12807212bb8d0cf1f11a2b881ca263fc19f.doc Page 122 of 158 33555.2.2.2 Trust model 3356Discussions of authentication, integrity and confidentiality mechanisms necessarily assume an 3357underlying trust model: how can one actor come to believe that a given key is uniquely associated 3358with a specific, identified actor so that the key can be used to encrypt data for that actor or verify 3359signatures (or other integrity structures) from that actor? Many different types of trust model exist, 3360including strict hierarchies, distributed authorities, the Web, the bridge and so on. 33615.2.2.3 Privacy 3362It is important to be aware that any transactions that occur in an SPML model system may contain 3363private and secure information about the actors. Selection and use of privacy mechanisms 3364appropriate to a given environment are outside the scope of this specification. The decisions 3365regarding whether, how and when to deploy such mechanisms is left to the implementers 3366associated with the environment. 12907212bb8d0cf1f11a2b881ca263fc19f.doc Page 123 of 158 130 3367Appendix A. Core XSD 13107212bb8d0cf1f11a2b881ca263fc19f.doc Page 124 of 158 use="optional"/> 13207212bb8d0cf1f11a2b881ca263fc19f.doc Page 125 of 158 13307212bb8d0cf1f11a2b881ca263fc19f.doc Page 126 of 158 13407212bb8d0cf1f11a2b881ca263fc19f.doc Page 127 of 158 13507212bb8d0cf1f11a2b881ca263fc19f.doc Page 128 of 158 13607212bb8d0cf1f11a2b881ca263fc19f.doc Page 129 of 158 3368 13707212bb8d0cf1f11a2b881ca263fc19f.doc Page 130 of 158 3369Appendix B. Async Capability XSD 13807212bb8d0cf1f11a2b881ca263fc19f.doc Page 131 of 158 3370 13907212bb8d0cf1f11a2b881ca263fc19f.doc Page 132 of 158 3371Appendix C. Batch Capability XSD 14007212bb8d0cf1f11a2b881ca263fc19f.doc Page 133 of 158 3372 14107212bb8d0cf1f11a2b881ca263fc19f.doc Page 134 of 158 3373Appendix D. Bulk Capability XSD 14207212bb8d0cf1f11a2b881ca263fc19f.doc Page 135 of 158 3374 14307212bb8d0cf1f11a2b881ca263fc19f.doc Page 136 of 158 3375Appendix E. Password Capability XSD 14407212bb8d0cf1f11a2b881ca263fc19f.doc Page 137 of 158 3376 14507212bb8d0cf1f11a2b881ca263fc19f.doc Page 138 of 158 3377Appendix F. Reference Capability XSD 14607212bb8d0cf1f11a2b881ca263fc19f.doc Page 139 of 158 3378 14707212bb8d0cf1f11a2b881ca263fc19f.doc Page 140 of 158 3379Appendix G. Search Capability XSD 14807212bb8d0cf1f11a2b881ca263fc19f.doc Page 141 of 158 14907212bb8d0cf1f11a2b881ca263fc19f.doc Page 142 of 158 15007212bb8d0cf1f11a2b881ca263fc19f.doc Page 143 of 158 3380Appendix H. Suspend Capability XSD 15107212bb8d0cf1f11a2b881ca263fc19f.doc Page 144 of 158 3381 15207212bb8d0cf1f11a2b881ca263fc19f.doc Page 145 of 158 3382Appendix I. Document References 3383 [ARCHIVE-1] OASIS Provisioning Services Technical Committee, email archive, 3384 http://www.oasis- 3385 open.org/apps/org/workgroup/provision/email/archives/index. 3386 html, OASIS PS-TC 3388 [DS] IETF/W3C, W3C XML Signatures, http://www.w3.org/Signature/, 3389 W3C/IETF 3391 [DSML] OASIS Directory Services Markup TC, DSML V2.0 Specification, 3392 http://www.oasis- 3393 open.org/apps/org/workgroup/dsml/documents.php, OASIS 3394 DS-TC 3396 [GLOSSARY] OASIS Provisioning Services TC, Glossary of Terms, 3397 http://www.oasis- 3398 open.org/apps/org/workgroup/provision/download.php/???, 3399 OASIS PS-TC 3401 [RFC2119] S. Bradner., Key words for use in RFCs to Indicate Requirement 3402 Levels, http://www.ietf.org/rfc/rfc2119.txt, IETF 3404 [SAML] OASIS Security Services TC, XMLTitle, http://www.oasis- 3405 open.org/apps/org/workgroup/sstc/documents.php, OASIS 3406 SS-TC 3408 [SPML-Bind]] OASIS Provisioning Services TC, SPML V1.0 Protocol Bindings, 3409 http://www.oasis- 3410 open.org/apps/org/workgroup/provision/download.php/1816/d 3411 raft-pstc-bindings-03.doc, OASIS PS-TC 3413 [SPML-REQ] OASIS Provisioning Services Technical Committee, Requirements, 3414 http://www.oasis- 3415 open.org/apps/org/workgroup/provision/download.php/2277/d 3416 raft-pstc-requirements-01.doc, OASIS PS-TC 3418 [SPML-UC] OASIS Provisioning Services Technical Committee, SPML V1.0 3419 Use Cases, http://www.oasis- 3420 open.org/apps/org/workgroup/provision/download.php/988/drf 3421 at-spml-use-cases-05.doc, OASIS PS-TC 3423 [SPMLv2-Profile-DSML] OASIS Provisioning Services Technical Committee, SPMLv2 3424 DSMLv2 Profile, OASIS PS-TC 3426 [SPMLv2-Profile-XSD ] OASIS Provisioning Services Technical Committee, SPML V2 XSD 3427 Profile, OASIS PS-TC 3429 [SPMLv2-REQ] OASIS Provisioning Services Technical Committee, Requirements, 3430 , OASIS PS-TC 15307212bb8d0cf1f11a2b881ca263fc19f.doc Page 146 of 158 3432 [SPMLv2-ASYNC] OASIS Provisioning Services Technical Committee, XML Schema 3433 Definitions for Async Capability of SPMLv2, OASIS PS-TC 3435 [SPMLv2-BATCH] OASIS Provisioning Services Technical Committee, XML Schema 3436 Definitions for Batch Capability of SPMLv2, OASIS PS-TC 3438 [SPMLv2-BULK] OASIS Provisioning Services Technical Committee, XML Schema 3439 Definitions for Bulk Capability of SPMLv2, OASIS PS-TC 3441 [SPMLv2-CORE] OASIS Provisioning Services Technical Committee, XML Schema 3442 Definitions for Core Operations of SPMLv2, , OASIS PS-TC 3444 [SPMLv2-PASS] OASIS Provisioning Services Technical Committee, XML Schema 3445 Definitions for Password Capability of SPMLv2, , OASIS PS-TC 3447 [SPMLv2-REF] OASIS Provisioning Services Technical Committee, XML Schema 3448 Definitions for Reference Capability of SPMLv2, , OASIS PS-TC 3450 [SPMLv2-SEARCH] OASIS Provisioning Services Technical Committee, XML Schema 3451 Definitions for Search Capability of SPMLv2, , OASIS PS-TC 3453 [SPMLv2-UC] OASIS Provisioning Services Technical Committee., SPML V2.0 3454 Use Cases, , OASIS PS-TC 3456 [XSD] W3C Schema WG ., W3C XML Schema, 3457 http://www.w3.org/TR/xmlschema-1/ W3C 3459 3460 15407212bb8d0cf1f11a2b881ca263fc19f.doc Page 147 of 158 155 3461Appendix J. Acknowledgments 3462The following individuals were voting members of the Provisioning Services committee at the time 3463that this version of the specification was issued: 3464List Members Here: 3465 3466 15607212bb8d0cf1f11a2b881ca263fc19f.doc Page 148 of 158 157 3468Appendix K. Notices 3469OASIS takes no position regarding the validity or scope of any intellectual property or other rights 3470that might be claimed to pertain to the implementation or use of the technology described in this 3471document or the extent to which any license under such rights might or might not be available; 3472neither does it represent that it has made any effort to identify any such rights. Information on 3473OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS 3474website. Copies of claims of rights made available for publication and any assurances of licenses to 3475be made available, or the result of an attempt made to obtain a general license or permission for 3476the use of such proprietary rights by implementors or users of this specification, can be obtained 3477from the OASIS Executive Director. 3478OASIS invites any interested party to bring to its attention any copyrights, patents or patent 3479applications, or other proprietary rights which may cover technology that may be required to 3480implement this specification. Please address the information to the OASIS Executive Director. 3481Copyright © OASIS Open 2004. All Rights Reserved. 3482This document and translations of it may be copied and furnished to others, and derivative works 3483that comment on or otherwise explain it or assist in its implementation may be prepared, copied, 3484published and distributed, in whole or in part, without restriction of any kind, provided that the above 3485copyright notice and this paragraph are included on all such copies and derivative works. However, 3486this document itself may not be modified in any way, such as by removing the copyright notice or 3487references to OASIS, except as needed for the purpose of developing OASIS specifications, in 3488which case the procedures for copyrights defined in the OASIS Intellectual Property Rights 3489document must be followed, or as required to translate it into languages other than English. 3490The limited permissions granted above are perpetual and will not be revoked by OASIS or its 3491successors or assigns. 3492This document and the information contained herein is provided on an “AS IS” basis and OASIS 3493DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO 3494ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY 3495RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A 3496PARTICULAR PURPOSE 15807212bb8d0cf1f11a2b881ca263fc19f.doc Page 149 of 158 159 3497Appendix L. Revision history 16007212bb8d0cf1f11a2b881ca263fc19f.doc Page 150 of 158 Rev Date By What Whom D- 20041001 Editor 0.1 Rough Draft. 01 D- 20041019 Editor Review Schema section. 01 Minor corrections to draft XSD. D- 20041026 Editor Define a Batch capability. 01 (Batch operation is no longer part of the core) D- 20041026 Editor Rework asynchronous execution. 01 1) By default, execution type is unspecified. 2) Requestor can specify asynchronous execution for ANY operation except cancel and status. Provider must execute as specified (or fail the request if unable to do so). 3) Provider can convert a request (for any operation except cancel and status) that does not specify synchronous execution to asynchronous execution (e.g., if workflow makes this necessary) 4) Provider returns requestID for any operation that the provider executes asynchronously. 5) Define Async Capability (so provider can indicate whether it supports asynchronous execution). May also contain cancel and status operations. D- 20041029 Editor Retention limit for results of async operations 01 does not rise to the level of specification. D- 20041102 Editor Review Introduction and Concepts sections. 01 1) Do not use Java to explain Capability 2) Target schema cannot contain DSML (because DSML deprecates schema); we mean “DSML binding for SPMLv2”. 3) Make clear that a target is not a provider (but is instead a container of objects that a provider manages) D- 20041115 Gerry Review Protocol section. 01 Woods 1) Remove language stating that the requestID value SHOULD be globally unique so that the value will not conflict with any other requestID value that the requestor may receive from any provider.” 2) Describe single-operation requests as ‘individual’ requests rather than ‘singleton’ requests. 3) PSO-IDs are required only to be unique within provider (rather than 16107212bb8d0cf1f11a2b881ca263fc19f.doc Page 151 of 158 globally unique). 4) ListTargets MUST be synchronous (previously said SHOULD). 5) Removed repetition of “open content” in listTargets/schema section. 6) Cleaned up listTargets example: - Remove XML Processing Instructions - Capability identifiers are namespaces - Status code values are no longer fully qualified D- 20041116 Editor Distributed draft Protocol/Async Capability section. 01 D- 20041118 Editor Distributed draft Protocol/Batch Capability section. 01 D- 20041129 Editor Distributed draft Protocol/Bulk, Password, Reference, Search and 01 Suspend Capability sections. D- 20041201 Editor Removed Schema section. Since each protocol section includes 01 relevant schema snippets (and normatively describes both request and response for every operation), schema section was redundant (and not worth 40-60 pages). D- 20041205 Editor Pasted in Draft 9 Schema snippets. Moved each complete schema 02 section into an appendix. Indicated pending and proposed XSD changes with red font and sometimes strikethrough. Renamed capabilityParameter to capabilityData. Renamed ObjectClassRefType to SchemaEntityRefType. Added sub-element to psoType. Modify operation may now return entire 16207212bb8d0cf1f11a2b881ca263fc19f.doc Page 152 of 158 mode”. Added bullet-pointed list of the four possibilities. SelectionType: Added subsection to describe “SelectionType processing in a Response (normative).” Delete: Say that Provider MUST ignore capability-specific data. D- 20041210 Editor Pasted in Draft 11 XSD files into Appendices. 03 Updated snippets for Protocol Request/Response model and Synchronous and Asynchronous Operations. D- 20041214 Editor ListTargets: pasted in Draft 11 XSD snippets. 03 Added discussion of SchemaEntityRefType#isContainer. Added discussion of SchemaType#ref element Added discussion of capabilities element wrapping capability. Add: pasted in Draft 11 XSD snippets. Added discussion of AddRequestType#returns. Renamed “parentId” to “containerID” (per Draft 11) AddResponseType#pso content depends on “returns” D- 20041216 Editor Lookup: pasted in Draft 11 XSD snippets. 03 Added discussion of LookupRequestType#returns. LookupResponseType#pso content depends on “returns” Lookup examples illustrate “returns” attribute. Moved Conformance before Security and Privacy Considerations. D- 20050112 Editor Pasted in remaining Draft 11 XSD snippets. 03 Discussed “returns” attribute and its effect on Discussed Discussed “recursive” attribute for Delete. D- 20050215 Editor Updated to Draft 13 XSD. 03 Updated OASIS Notices for 2005. Explained (in the non-normative section that introduces the Async Capability) why the cancel and status operations must be synchronous. Explained (in the non-normative section that introduces the Search Capability) why the iterate operation must be synchronous. Specified that neither suspend nor resume should return an error when the object is already in the desired state. Explained (in the non- normative section that introduces the Suspend Capability) that the suspend and resume operations are idempotent. D- 20050225 Editor Removed Glossary appendix. Add Reference to [GLOSSARY] as a 03 separate document. Removed Requirements appendix. Add Reference to [SPMLv2-REQ] as a separate document. 16307212bb8d0cf1f11a2b881ca263fc19f.doc Page 153 of 158 D- 20050308 Editor Removed Editor’s note in 3.4.1.2.2. Per agreement on #40 in 04 draft_13_xsd_issues.txt, schema declares valid containers. Invalid content is an exception. Documented “Status and Error Codes” as a general feature of the protocol. (This replaces references to normative Schema sections.) D- 20050325 Editor Explained (in the non-normative section that introduces each) why the 04 listTargets, batch, search, iterate, cancel and status operations are not batchable. Stated (in the normative section that describes the batch request) that these operations must not be nested within a batch request. D- 20050326 Editor Updated schema appendices, schema snippets and examples to XSD 04 version 15. D- 20050404 Editor Updated names of XSD Profile and DSMLv2 Profile documents. 05 Renamed “SPML1.0 Profile” (back) to “DSMLv2 Profile”. Clarified that content of schema element takes precedence over any reference to a schema URN or URL. Removed from the Concepts section most of the language that referred to SPML 1.0. Removed statement that SPMLv2 continues to supports SPML1.0 as a profile. Now say only that DSMLv2 profile supports a similar schema model. Added normative sub-section specific to Status (and normative subsection specific to Error) within “Status and Error codes”. Reworded “Conversational flow” section to avoid the word “blocking”. Removed some language (including the introductory paragraph) that suggested order that does not exist over a connectionless protocol. Mentioned that modify can change PSO-ID in non-normative section that introduces the modify operation. Discussed adding and modifying a reference in modify Examples. D- 20050404 Editor Use ‘http://www.w3.org/TR/xpath20’ as namespaceURI for Xpath. 06 Illustrate targetID as an attribute (with additions and strikethroughs). Removed namespace qualifier from status values (e.g., “success”). Correct miscellaneous errors in examples (noted by Rami Elron). Assume top-level elements bulkModifyResponse and bulkDeleteResponse of type spml:ResponseType. Assume top-level element iterateResponse of type 16407212bb8d0cf1f11a2b881ca263fc19f.doc Page 154 of 158 SearchResponseType. D- 20050516 Editor Remove Editor’s note: “Darran will send UML to replace ERD”. 07 Updated Jeff Bohren’s email address (throughout). Update text to discuss targetID and containerID as attributes (rather than elements). Applies also to baseTargetID and baseContainerID within SearchQueryType. Applies also to targetID and ID in PSOIdentifierType. #13. Discuss Complex References within Reference Capability section. Explain that capabilities cannot apply to references, and explain that a provider may model each complex relationship as a PSO. Use RacfGroupMembership to illustrate two approaches: 1) independent relationship objects and 2) bound relationship objects. Move D- 20050517 Editor Update to XSD 18: 08 (65). SchemaEntityRefType: add targetID attribute. 16507212bb8d0cf1f11a2b881ca263fc19f.doc Page 155 of 158 (67): AddRequestType#targetID: was element now attribute. (67): PSOIdentifierType: containerID now element. (67): TargetType: targetID is now attribute. (71): Define LogicalOperatorType. (67): SearchQueryType: targetID is now attribute. - Move maxReturn from SearchQueryType to SearchRequestType - HasReferenceType now has individual components of reference. Update to XSD 19: - AddRequestType: remove xsd choice. #10: ListTargetsResponse#Capability topic now specifies that any declaration of the reference capability must contain at least one reference definition. #11: ListTargetsResponse#ResourceDefinition canReferTo topic now specifies that any D- 20050523 Editor Update to XSD 20: 09 (81) PSOIdentifierType#containerID now minOccurs=0. (84) Remove maxReturn from SearchQueryType. (88) LookupRequestType#psoID now has default cardinality. Change effectiveDate from “datetime” to “dateTime”. #28. Remove undefined 'isContainer' attribute from 'Organization' and 'OrganizationalUnit' in 16607212bb8d0cf1f11a2b881ca263fc19f.doc Page 156 of 158 2.1.3.1 from "Schema" to "Target Schema". #39 Added a “Resource Considerations” topic within the Search Capability section. The text within the “Search is not batchable” and “Iterate is not batchable” topics now refers to this “Resource Considerations” topic. Update to XSD 21: (89) Remove CHOICE from SearchQueryType. Rename maxReturn to maxSelect. (85) Rename toPSOID to toPsoID. (86) Rename basePSOID to basePsoID. #41. Correct modification examples to use namespaceURI and path to specify replacement of entire elements (not attributes). #43. Reword section on Batch as a Logical Unit of Work. Rename topic from “A batch is not a logical unit of work” to “No transactional semantics”. #44. Remove references to BatchableRequestType. #46. Make clear that RACF Group Membership is an example of a Complex Reference, not an official part of the Reference Capability. - Rename the topic from “RACF Group Membership” to “Example: RACF Group Membership” - Change the font on the RacfGroupMembership XSD to Arial. - RacfGroupMembershipType should NOT extend spml:ExtensibleType. #47. Empty search result contains no iterator. #51. Iterator element in IterateRequest iterator needs only ID attribute (not count or totalCount). #54. Remove the last remaining reference to capability “registry”. #14. Assume ReferenceDefinitionType contains any number of referenceDataType elements of type SchemaEntityRefType. Discuss referenceDataType within ReferenceDefinition section of Reference Capability. Add “ReferenceDefinition referenceDataType” topic within listTargetsResponse section. D- 20050607 Editor #57. Correct examples: psoID#objectID should be psoID#ID. 10 #14, #56. Remove red font from referenceDataType discussion. #56 Remove red font and strikethrough font (including editor’s notes for issues #6, #7, and #8). Update to XSD 22: #53. Remove Iterator#count and #totalCount. SearchResponse must return error='insufficientResources' if search result exceeds a limit on the provider's part. #55. Add a section within SearchCapability that describes the closeIterator operation. Update to XSD 23: - closeIteratorResponseType is now of type spml:ResponseType 16707212bb8d0cf1f11a2b881ca263fc19f.doc Page 157 of 158 (rather than spmlsearch:SearchResponseType). - allow cardinality to default to IterateRequestType#iterator. - allow cardinality to default for CloseIteratorRequestType#iterator. #49. Update normative text to reflect removal of ReturnDataType#none. Affects several "PSO and ReturnData" topics. 3498 16807212bb8d0cf1f11a2b881ca263fc19f.doc Page 158 of 158