Authorization Requirements

This specification does not describe a discrete service but describes the model for authorization used by an Open Services for Lifecycle Collaboration provider. This specification assumes the implementation of the authentication specification.

Motivation

Just about every service described by the Open Services for Lifecycle Collaboration initiative has to describe the roles required to read or write to resources. This specification describes the model for authorization as well as the base set of required roles a client can expect to deal with.

Specification

Quite simply service operations all require that a user be authenticated and be assigned certain roles to perform the request. The following are the minimal set of required roles, a server may provide more roles and more granularity in roles, however they MUST provide all of the following.

Guest
An unauthenticated user, currently the only resource in this set of specifications that allows Guest access is the root service document. It is also possible for a user to be configured (i.e. they are in the users feed) but they have not been assigned any role.
Reader
Generally all GET and HEAD operations require the authenticated user have at least the Reader role. Also referred to as Repository Reader.
Writer
Generally all PUT, POST and DELETE operations require the authenticated user have at least the Writer role. Also referred to as Repository Writer, and also behaves as a super-set of Reader.
Admin
Certain sensitive operations require the authenticated user have at least the Admin role. Also referred to as Repository Admin, and also behaves as a super-set of Writer.

Example

The following example follows from the example in the authentication specification and shows the response when our example user requests an operation for which they do not have the correct role.

GET - Without the Correct Role
Request
GET /jazz/resources/main/A HTTP/1.1
Host: example.com
Date: [t2000]
Authorization: Basic [zoe's credential hash]
Response
HTTP/1.1 403 OK
Host: example.com
Date: [t200]