Old Release

This documentation covers an old version of Fedora. Looking for another version? See all documentation.

When the WebAC module is in effect, resource access is based on the presence of a triple with the acl:accessControl predicate. For any resource that has an RDF graph that does not contain a triple with that property, the WebAC authorization module will look in the parent container until it reaches the root resource. If there is still no acl:accessControl property, then the Authorization Delegate will inspect a filesystem-based policy.

The default policy is defined to block all access:

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix acl: <http://www.w3.org/ns/auth/acl#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix fedora: <http://fedora.info/definitions/v4/repository#> .

<> a acl:Authorization ;
   rdfs:label "Root Authorization" ;
   rdfs:comment "By default, all non-Admin agents (foaf:Agent) are denied access (no acl:mode is specified) to all resources." ;
   acl:agent foaf:Agent ;
   acl:accessToClass fedora:Resource .

In most cases, this default is appropriate, but it is also possible to override this acl:Authorization definition with a custom policy.

In order to override this policy, it is recommended to add a configuration value to JAVA_OPTS, pointing to the custom authorization policy:

export JAVA_OPTS="${JAVA_OPTS} -Dfcrepo.auth.webac.authorization=/path/to/authorization.ttl"

When overriding the filesystem-based authorization, be aware that the WebAC module expects that file to be in Turtle format.

For instance, in order to grant read access to the entire repository:

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix acl: <http://www.w3.org/ns/auth/acl#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .

<> a acl:Authorization ;
   rdfs:label "Root Authorization Policy" ;
   rdfs:comment "Provide read access to all resources to all agents." ;
   acl:agent foaf:Agent ;
   acl:mode acl:Read ;
   acl:accessTo <info:fedora/> .

Please note that any use of acl:accessTo will use a different syntax to refer to Fedora locations. Here, the root Fedora resource is written <info:fedora/>, since this file is not aware of the HTTP location of the repository. If, for instance, a default policy is to apply to all locations under /fcrepo/rest/acls, then the acl:accessTo triple would refer to <info:fedora/acls>. This way, the default policy is portable across hostname or port changes.

 

  • No labels