diff --git a/main/authorization.bs b/main/authorization.bs index 3bcc1fde..7b63abbf 100644 --- a/main/authorization.bs +++ b/main/authorization.bs @@ -3,12 +3,14 @@ Authorization {#authorization} ## Web Access Control ## {#web-access-control} -Web Access Control (WAC) is a decentralized cross-domain access control -system. The WAC mechanism is concerned with giving access to agents denoted by -a [[#webid]] to perform various kinds of read-write operations on resources -identified by URLs. The Access Control List (ACL) vocabulary is used to -describe authorization policies about authorized agents with modes of access -on target resources. +Web Access Control (WAC) is a +decentralized cross-domain access control system. The WAC mechanism is +concerned with giving access to agents denoted by a [[#webid]] to perform +various kinds of read-write operations on resources identified by URLs. The +Access Control List +(ACL) ontology is used to describe +authorization policies about authorized agents with modes of access on target +resources. Servers MUST conform to the Web Access Control specification [[!WAC]]. @@ -19,3 +21,51 @@ the HTTP `Link` header with a `rel` value of `acl` [[#acl]]. In the event that a server can't apply an ACL to a resource, it MUST deny access. [[Source](https://github.com/solid/specification/issues/130#issue-532777017)] + +Servers exposing client's access privileges on a resource URL MUST advertise +by including the `WAC-Allow` HTTP header in the response of HTTP `HEAD` and +`GET` requests. + +The syntax for the `WAC-Allow` header, using the ABNF syntax defined in +Section 1.2 of [[!RFC7231]], is: + +``` +wac-allow = "WAC-Allow" ":" OWS #access-param OWS +access-param = permission-group OWS "=" OWS access-modes +permission-group = 1*ALPHA +access-modes = *1DQUOTE OWS *1(access-mode *(RWS access-mode)) OWS *1DQUOTE +access-mode = "read" / "write" / "append" / "control" +``` + +The `WAC-Allow` HTTP header's field-value is a comma-separated list of +`access-param`s. `access-param` is a whitespace-separated list of `access +modes` granted to a `permission-group`. + +This specification defines the following `permission-group`s: + +