Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Create these four files:

    Code Block
    languagetext
    titleacl.ttl
    @prefix webac: <http://fedora.info/definitions/v4/webac#>.
    @prefix ldp: <http://www.w3.org/ns/ldp#>.
    
    <> a webac:Acl .
    Code Block
    languagetext
    titlegroup.ttl
    @prefix ldp: <http://www.w3.org/ns/ldp#>.
    @prefix foaf: <http://xmlns.com/foaf/0.1/> .
    
    <> a ldp:BasicContainer, foaf:Group;
        foaf:member "testuser".
    Code Block
    languagetext
    titlefoo.ttl
    @prefix ldp: <http://www.w3.org/ns/ldp#>.
    @prefix acl: <http://www.w3.org/ns/auth/acl#>.
    @prefix dc: <http://purl.org/dc/elements/1.1/>.
    
    <> a ldp:BasicContainer;
        acl:accessControl </fcrepo/rest/acl>;
        dc:title "Hello, World!".
    Code Block
    languagetext
    titleauthz.ttl
    @prefix acl: <http://www.w3.org/ns/auth/acl#>.
    
    <> a acl:Authorization;
        acl:accessTo </fcrepo/rest/foo>;
        acl:agentClass </fcrepo/rest/group>;
        acl:mode acl:Read.
  2. Upload these resources into Fedora:

    Code Block
    languagetext
    $ curl -X PUT http://localhost:8080/fcrepo/rest/acl -u fedoraAdmin:secret3 \
        -H "Content-Type: text/turtle" --data-binary @acl.ttl
    $ curl -X PUT http://localhost:8080/fcrepo/rest/foo -u fedoraAdmin:secret3 \
        -H "Content-Type: text/turtle" --data-binary @foo.ttl
    $ curl -X PUT http://localhost:8080/fcrepo/rest/group -u fedoraAdmin:secret3 \
        -H "Content-Type: text/turtle" --data-binary @group.ttl
    $ curl -X PUT http://localhost:8080/fcrepo/rest/acl/authz -u fedoraAdmin:secret3 \
        -H "Content-Type: text/turtle" --data-binary @authz.ttl

    (Note: The order you upload these in is important, since foo references acl, and authz references foo and group)

  3. Test that testuser can read the foo resource, while adminuser cannot: 

    Code Block
    languagetext
    $ curl -i http://localhost:8080/fcrepo/rest/foo -u testuser:password1
    $ curl -i http://localhost:8080/fcrepo/rest/foo -u adminuser:password2

    The first request should respond with 200 OK, while the second should be 403 Forbidden.

    To allow adminuser to also read the foo resource, we can add adminuser to the members of the group.

...