Web Access Control
-Editor’s Draft,
+Editor’s Draft,
More details about this document
-
@@ -253,6 +253,7 @@
- Tim Berners-Lee
- Henry Story
- Sarven Capadisli +
- Christoph Braun
Web Access Control
- Created @@ -264,7 +265,7 @@
Web Access Control
- Modified - +
- Feedback @@ -290,7 +291,7 @@
Web Access Control
- Version -
- 1.0.0 +
- 1.1.0
- Notifications Inbox @@ -348,7 +349,7 @@
Web Access Control
Copyright © 2021–2024 the Contributors to Web Access Control, Editor’s Draft, under the W3C Community Contributor License Agreement (CLA). A human-readable summary is available. All code snippets are in the public domain, CC0.
+Copyright © 2021–2026 the Contributors to Web Access Control, Editor’s Draft, under the W3C Community Contributor License Agreement (CLA). A human-readable summary is available. All code snippets are in the public domain, CC0.
Table of Contents
- 3.1 ACL Resource Discovery -
- 3.2 ACL Resource Representation +
- 3.2 ACL Resource Condition Discovery +
- 3.3 ACL Resource Representation
Table of Contents
Table of Contents
Table of Contents
- 7.1 Authorization Extensions
- 7.2 Access Mode Extensions -
- 7.3 Permission Inheritance Extensions -
- 7.4 Distinct Effective ACL Resource Extensions +
- 7.3 Access Condition Extensions +
- 7.4 Permission Inheritance Extensions +
- 7.5 Distinct Effective ACL Resource Extensions
Table of Contents
Introduction
This section is non-normative.
-Unauthorized access or modification of Web resources could lead to unintended loss, damage or disclosure of data. To support read-write operations within the framework of HTTP and meet the social requirements of decentralised applications, mechanisms for expressing and applying authorization conditions are needed.
-Web Access Control (WAC) is a decentralized cross-domain access control system providing a way for Linked Data systems to set authorization conditions on HTTP resources using the Access Control List (ACL) model.
-The WAC specification describes how to enable applications to discover Authorizations associated with a given resource, and to control such rules, as directed by an agent. Server manages the association between a resource and an ACL resource, and applies the authorization conditions on requested operations. Authorizations are described using the ACL ontology to express and determine access privileges of a requested resource. Any kind of access can be given to a resource as per the ACL ontology. This specification uses the access modes currently defined by the ACL ontology, such as the class of operations to read, write, append and control resources. An Authorization can allow public access to resources or place the requirement for authenticated agents. Resources and agents can be on different origins.
+Unauthorized access or modification of Web resources could lead to unintended loss, damage or disclosure of data. To support read-write operations within the framework of HTTP and meet the social requirements of decentralised applications, mechanisms for expressing and applying authorization rules.
+Web Access Control (WAC) is a decentralized cross-domain access control system providing a way for Linked Data systems to set authorization rules on HTTP resources using the Access Control List (ACL) model.
+The WAC specification describes how to enable applications to discover Authorizations associated with a given resource, and to control such rules, as directed by an agent. Server manages the association between a resource and an ACL resource, and applies the authorization rules on requested operations. Authorizations are described using the ACL ontology to express and determine access privileges of a requested resource. Any kind of access can be given to a resource as per the ACL ontology. This specification uses the access modes currently defined by the ACL ontology, such as the class of operations to read, write, append and control resources. An Authorization can allow public access to resources or place the requirement for authenticated agents. Resources and agents can be on different origins.
Note: Specification Orthogonality
Terminology
This section is non-normative.
The WAC specification defines the following terms. These terms are referenced throughout this specification.
--
-
+
- URI
- A Uniform Resource Identifier (URI) provides the means for identifying resources [RFC3986].
- resource @@ -495,8 +499,14 @@
- An agent group is a group of persons or entities identified by a URI.
- agent class
- An agent class is a class of persons or entities identified by a URI. +
- issuer +
- An issuer is an agent that asserts characteristics of an agent, such as identity, role, attribute, capability, or similar. +
- client +
- A client is a software agent (application) which requests resources on behalf of an agent (possibly itself).
- origin
- An origin indicates where an HTTP request originates from [RFC6454]. +
- condition +
- A condition is an additional requirement on an Authorization that is evaluated as part of Authorization Evaluation.
Terminology
In addition to the terminology above, this specification also uses terminology from the [INFRA] specification. When INFRA terminology is used, such as string and boolean, it is linked directly to that specification.
HTTP Interactions
ACL Resources
This section describes ACL resource discovery and representation.
+This section describes ACL resource discovery, condition discovery, and representation.
ACL Resource Discovery
Note: URI Origin
Source: issues/8, issues/62, issues/131, issues/176
ACL Resource Condition Discovery
+When a server wants to enable applications to discover supported condition types (Access Conditions) for a given effective ACL resource, the server MUST advertise each supported condition type by responding to an HTTP request on the effective ACL resource including a Link header with the rel value of http://www.w3.org/ns/auth/acl#condition and the condition type as link target [RFC8288].
Clients MUST make an HTTP request on the effective ACL resource and check the HTTP Link header with the rel parameter value of http://www.w3.org/ns/auth/acl#condition to discover supported condition types (Access Conditions).
Note: Discovering Condition Types via Effective ACL Resource
+Clients do not need an additional HTTP request to discover supported condition types, since they can be obtained as part of determining the effective ACL resource.
+ACL Resource Representation
ACL Resource Representation
@@ -726,6 +778,7 @@Authorization Conformance
acl:accessTo or acl:default property value (Access Objects).acl:mode property value (Access Modes).acl:agent, acl:agentGroup, acl:agentClass or acl:origin property value (Access Subjects).acl:condition property value (Access Conditions).Source: issues/56, issues/57, issues/169, issues/186, issues/193, issues/17, issues/18, issues/38, issues/68, issues/78, issues/145
Note: HTTP Method and Access Mode Mappin
POST
The HTTP POST can be used to create a new resource in a container or add information to existing resources (but not remove resources or its contents) with either acl:Append or acl:Write.
PUT
- The HTTP PUT method requests to create or replace the resource state. Creating a new resource requires acl:Append and/or acl:Write access to the container as well as acl:Write access to the (new) resource. Replacing an existing resource requires only acl:Write access to the resource itself.
+ The HTTP PUT method requests to create or replace the resource state. Creating a new resource requires acl:Append and/or acl:Write access to the container as well as acl:Write access to the (new) resource. Replacing an existing resource requires only acl:Write access to the resource itself.
PATCH
As the processing of HTTP PATCH method request depends on the request semantics and content, acl:Append can allow requests to insert but not delete operations, whereas acl:Write would allow both operations. To create a new resource, acl:Append or acl:Write access mode to the container is additionally required.
DELETE
@@ -782,6 +835,14 @@ Note: HTTP Method and Access Mode Mappin
POSTPOST can be used to create a new resource in a container or add information to existing resources (but not remove resources or its contents) with either acl:Append or acl:Write.PUTPUT method requests to create or replace the resource state. Creating a new resource requires acl:Append and/or acl:Write access to the container as well as acl:Write access to the (new) resource. Replacing an existing resource requires only acl:Write access to the resource itself.PUT method requests to create or replace the resource state. Creating a new resource requires acl:Append and/or acl:Write access to the container as well as acl:Write access to the (new) resource. Replacing an existing resource requires only acl:Write access to the resource itself.PATCHPATCH method request depends on the request semantics and content, acl:Append can allow requests to insert but not delete operations, whereas acl:Write would allow both operations. To create a new resource, acl:Append or acl:Write access mode to the container is additionally required.DELETESource: issues/47, issues/132, issues/197, issues/246, issues/122
Condition Evaluation
+When an Authorization includes one or more acl:condition properties, the server MUST only consider conditions whose types are signalled via ACL Resource Condition Discovery. Conditions whose types are not signalled are not used in Authorization Evaluation.
When an Authorization includes one or more acl:condition properties whose types are signalled, the server MUST match an Authorization only when all such conditions are satisfied.
This specification defines condition types in Access Conditions. Additional condition types can be defined as per Authorization Extensions.
+Access Mode Extensions
Foreign-namespaced access modes are allowed in ACL resources, but they MUST NOT cause increased access.
Access Condition Extensions
+An extension to access conditions is any condition type not described in this specification (Access Conditions), including foreign-namespaced types, which need not explicitly declare a acl:Condition. Consumers of Authorizations that encounter condition types they do not support MUST NOT stop processing or signal an error and MUST continue processing the access conditions as if those properties were not present.
Permission Inheritance Extensions
Security Considerations
Implementations are encouraged to use mechanisms to record activities about ACL resources for the purpose of accountability and integrity, e.g., by having audit trails, notification of changes, reasons for change, preserving provenance information.
Implementations that want to allow a class of write or control operations on resources are encouraged to require agents to be authenticated, e.g., for purposes of provenance or accountability.
+Implementations are encouraged to consider scenarios in which Authorizations granting acl:Control are client-agnostic and issuer-agnostic, avoiding inadvertent loss of control if a client or issuer becomes unavailable or untrustworthy, as well as scenarios in which restricting control access to specific clients or issuers could expose the controller to manipulation through a malicious client or issuer.
Implementations are strongly encouraged to be aware that Authorizations including acl:condition evaluated by a server without condition support could result in access rights broader than those intended by the original Authorization. Similarly, clients that do not support a condition type will process the Authorization without evaluating that condition. System operators are strongly encouraged to verify Authorizations with conditions against the condition capabilities of the server prior to deployment.
Implementations are encouraged to consider granting acl:Control access using an acl:Condition to clients known to support conditions, to preserve Authorization integrity, and to reduce the risk of inadvertent condition removal by condition-unaware clients.
Privacy Considerations
The class of read and write operations require discrete access permissions:
Access permission to append a new resource to a container resource is independent of access permission to read a container resource. Thus, servers are encouraged to prevent information leakage when a successful HTTP request appends a new resource to a container resource. For instance, while the knowledge of the URI-Reference in Location and Content-Location HTTP headers in the response of a POST does not in itself pose a security threat ([RFC3986]), servers can consider the risks when read access to the container is not granted to agents.
Access permission to update a resource is independent of access permission to read a resource. Thus, servers are encouraged to prevent information leakage when an attempt to delete information in a resource might reveal the existence of the information. For instance, when an HTTP PATCH request uses SPARQL Update’s DELETE DATA operation, servers can consider the risks of disclosing information by the chosen status code when read access to the resource is not granted to agents.
Implementations are encouraged to be aware that acl:ClientCondition and acl:IssuerCondition in an ACL resource extend the existing exposure of agent information to other agents with acl:Control access, additionally revealing which client applications and identity providers an agent might use.
Security and Privacy Review
Origin header (typical Web browsers use origin based security to warn servers), Authorizations are matched in context of the origin of the HTTP request in addition to requiring agent identification and allowed access modes. While the use of Origin is not intended as client identification, the implication is that unless servers have separate mechanisms to verify the original request made by an application, the Origin header’s field-value can differ. In order to distinguish social entities and clients supported by authentication protocols, an issue on client identification is filed.Origin header (typical Web browsers use origin based security to warn servers), Authorizations are matched in context of the origin of the HTTP request in addition to requiring agent identification and allowed access modes. While the use of Origin is not intended as client identification, the implication is that unless servers have separate mechanisms to verify the original request made by an application, the Origin header’s field-value can differ.browser’s 'normal' state.
Changelog
acl:condition as part of an applicable Authorization.Changelog
Acknowledgements
The Community Group gratefully acknowledges the work that led to the creation of this specification, and extends sincere appreciation to those individuals that worked on technologies and specifications that deeply influenced our work.
-The Community Group would like to thank the following individuals for their useful comments, both large and small, that have led to changes to this specification over the years:
+The Community Group thanks the following individuals, listed in alphabetical order by full name, for their helpful comments, both large and small, which have contributed to changes in this specification over the years.
- Aaron Coburn
- Abdurrahman Ibrahim Ghanem
- Alain Bourgeois +
- Alexander James Phillips
- Amy Guy
- Andreas Kuckartz
- Andrei Sambra @@ -1126,6 +1275,7 @@
- Benjamin Goering
- Beth Porter
- Bob Ferris +
- Christoph Braun
- Dan Brickley
- David Booth
- dbernstein @@ -1167,6 +1317,7 @@
- Pierre-Antoine Champin
- Pieter Colpaert
- Reese Hodge +
- Ross Horne
- Ruben Taelman
- Ruben Verborgh
- Sandro Hawke