Versions Compared

Key

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

...

Expand
4 Resource Versioning

4.1 Versioned Resources

  • MUST provide TimeGate interaction model, detailed below

4.1.1 HTTP GET (LDPRv)

  • (tick) The Accept-Datetime header is used to request a past state, exactly as per [ RFC7089section 2.1.1. A successful response must be a 302 (Found) redirect to the appropriate LDPRm
  • (error) If no LDPRm is appropriate to the Accept-Datetime value, an implementation should return a 406 (Unacceptable).
    • Jira
      serverDuraSpace JIRA
      serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
      keyFCREPO-2812
  • The response to a GET request on an LDPRv must include the following headers:

4.1.2 HTTP PUT (LDPRv) (Danny Bernstein)

  • (tick) An implementation must support PUT, as is the case for any LDPR.
4.2 Version Resources (LDPRm)
  • (tick) An  LDPRm   may  be deleted
  • (tick) An  LDPRm  must not  be modified once created.

4.2.1 HTTP GET (LDPRm)

  • (tick) An implementation must support GET, as is the case for any LDPR (LDP-RS memento)
  • (tick) An implementation must support GET, as is the case for any LDPR (LDP-NR memento)
  • (tick) The headers for  GET  requests and responses on this resource  must  conform to [ RFC7089section 2.1 . Particularly it should be noted that the relevant  TimeGate  for an  LDPRm  is the original versioned  LDPRv .
  • (tick) Any response to a GET request must include a <http://mementoweb.org/ns#Memento>; rel="type" link in the Link header.

4.2.2 HTTP OPTIONS (LDPRm)

4.2.3 HTTP POST (LDPRm)

4.2.4 HTTP PUT (LDPRm)

  • (tick) An implementation must not support PUT for LDPRms.

4.2.5 HTTP PATCH (LDPRm)

  • (tick) An implementation must not support PATCH for LDPRms.

4.2.6 HTTP DELETE (LDPRm)

  • (tick) An implementation may support DELETE for LDPRms. If DELETE is supported, the server is responsible for all behaviors implied by the LDP-containment of the LDPRm.
4.3 Version Containers (LDPCv) (Jared Whiklo)
  • (tick) An implementation must indicate TimeMap in the same way it indicates the container interaction model of the resource via HTTP headers.
  • (tick) An implementation must not allow the creation of an LDPCv that is LDP-contained by its associated LDPRv.

4.3.1 HTTP GET (LDPCv) (Jared Whiklo)

  • (tick) An implementation must support GET, as is the case for any LDPR.
  • (tick) Any response to a GET request must include a <http://mementoweb.org/ns#TimeMap>; rel="type" link in the Link header.
  • (tick) An LDPCvmust respond to GET Accept: application/link-format as indicated in [ RFC7089section 5 and specified in [ RFC6690section 7.3.
  • (tick) An implementation must include the Allow header
  • (error)(tick) If an LDPCv supports POST, then it must include the Accept-Post header
    • Jira
      serverDuraSpace JIRA
      serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
      keyFCREPO-2811
  • (minus) If an LDPCv supports PATCH, then it must include the Accept-Patch header - PATCH not supported
  • (error) An (tick) An LDPCv, being a container must have a "Link: <http://www.w3.org/ns/ldp#Container>;rel="type"" header
    • Jira
      serverDuraSpace JIRA
      serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
      keyFCREPO-2809

4.3.2 HTTP OPTIONS (LDPCv) (Jared Whiklo)

  • (tick) Implementations MUST support OPTIONS
  • (tick) Implementation's response to an OPTIONS request MUST include "Allow: GET, HEAD, OPTIONS"
  • (tick) Implementations may Allow: DELETE if the versioning behavior is removable by deleting the LDPCv
  • (tick) Implementations may Allow: PATCH if the LDPCv has mutable properties
    • (it does not allow PATCH because LDPCv does not have mutable properties).
  • (tick) Implementations may Allow: POST if versions can be explicitly minted by a client
  • (error) If (tick) If an LDPCv supports POST, the response MUST include the "Accept-Post" header
    • Jira
      serverDuraSpace JIRA
      serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
      keyFCREPO-2820
  • (tick) If an LDPCv supports PATCH, the response MUST include the "Accept-Patch" header

4.3.3 HTTP POST (LDPCv) 

  • (tick) Although an LDPCv is both a TimeMap and an LDPC, it may disallow POST requests. - POST is allowed

4.3.3.1 Implementations that allow POSTs for LDPCvs

  • (tick) If an LDPCv supports POST, a POST request that does not contain a Memento-Datetime header should be understood to create a new LDPRm contained by the LDPCv, reflecting the state of the LDPRv at the time of the POST
  • (tick) If an LDPCv supports POST, a POST request that does not contain a Memento-Datetime header MUST ignore any request body
  • (tick) If an LDPCv supports POST, a POST with a Memento-Datetime header should be understood to create a new LDPRm contained by the LDPCv, with the state given in the request body
  • (tick) If an LDPCv supports POST, a POST with a Memento-Datetime header should be understood to create a new LDPRm contained by the LDPCv, with the datetime given in the Memento-Datetime request header.

4.3.3.2 Implementations that disallow POSTs for LDPCv

  • (minus) If an implementation does not support one or both of POST cases above, it must respond to such requests with a 4xx range status code and a link to an appropriate constraints document

4.3.4 HTTP PUT (LDPCv)

  • (error) Implementations MAY disallow PUT - we should disallow
    • Jira
      serverDuraSpace JIRA
      serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
      keyFCREPO-2821

4.3.5 HTTP PATCH (LDPCv)

  • (minus) Implementations MAY disallow PATCH - disallowed

4.3.6 HTTP DELETE (LDPCv)

  • (tick) An implementation may support DELETE.
  • (tick) An implementation that does support DELETE should do so by both removing the LDPCv and removing the versioning interaction model from the original LDPRv.

4.4 Implementation Patterns

  • Non-normative section

...

Expand

5. Resource Authorization

  • (error) Implementations MUST follow the recommendations of Web Access Control
    • (tick) acl:agentGroup appears to be implemented, per wiki documentation
    • (error)
      Jira
      serverDuraSpace JIRA
      columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
      serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
      keyFCREPO-2698
      acl:default is not supported - currently behaves as "acl:default" exists without the acl:default defined.
    • (error)
      Jira
      serverDuraSpace JIRA
      serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
      keyFCREPO-2742
    • (error)
      Jira
      serverDuraSpace JIRA
      serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
      keyFCREPO-2743
    • (tick) (error)
      Jira
      serverDuraSpace JIRA
      serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
      keyFCREPO-2745


5.1 ACLs are LDP RDF Sources

  • (tick) An ACL for a controlled resource on a conforming server MUST itself be an LDP-RS.
    • Jira
      serverDuraSpace JIRA
      serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
      keyFCREPO-2833

5.2 ACL Representation and Interpretation (Danny Bernstein)

  • (tick) Implementations MUST inspect the ACL RDF for authorizations.
  • (tick) Implementations MUST use only statements associated with an authorization in the ACL RDF to determine access,
    • (error) except in the case of acl:agentGroup statements where the group listing document is dereferenced.
      Jira
      serverDuraSpace JIRA
      serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
      keyFCREPO-2275
  • (tick) The authorizations MUST be examined to see whether they grant the requested access to the controlled resource.
  • (tick) If none of the authorizations grant the requested access then the request MUST be denied.

5.3 ACLs are discoverable via Link Headers

  • (tick) A conforming server MUST advertise the individual resource ACL for every controlled resource in HTTP responses with a rel="acl" link in the Link header, whether or not the ACL exists.
  • (tick) The ACL resource SHOULD be located in the same server as the controlled resource.

5.4 ACL linking on resource creation (Peter Eichman)

  • (error) A client HTTP POST or PUT request to create a new LDPR MAY include a rel="acl" link in the Link header referencing an existing LDP-RS to use as the ACL for the new LDPR.
    • (Peter Eichman) the rel="acl" link header for the second LDPR is ignored
    • (Peter Eichman) instead, the second LDPR's rel="acl" link is to the /fcr:acl endpoint appended to that LDPR's URI
  • (error) The server MUST reject the request and respond with a 4xx or 5xx range status code, such as 409 (Conflict) if it isn't able to create the LDPR with the specified LDP-RS as the ACL.
    • (Peter Eichman) see the previous point; a 201 is returned instead of an expected 409 (or other 4xx or 5xx)
  • (error) In that response, the restrictions causing the request to fail MUST be described in a resource indicated by a rel="http://www.w3.org/ns/ldp#constrainedBy" link in the Link response header
  • These items are silently ignoring the rel="acl" Link header, need to 4xx to change these to (minus).
    Jira
    serverDuraSpace JIRA
    serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
    keyFCREPO-2822

5.5 Cross-Domain ACLs (Peter Eichman)

  • (error) Implementations MAY restrict support for ACLs to local resources.
  • (error) If an implementation chooses to reject requests concerning remote ACLs,
    • (error) it MUST respond with a 4xx range status code
    • (error) and MUST advertise the restriction with a rel="http://www.w3.org/ns/ldp#constrainedBy" link in the Link response header.
      • (Peter Eichman) these are failing in the same manner as the requests in 5.4; the rel="acl" Link header in the request is silently ignored
      • Jira
        serverDuraSpace JIRA
        serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
        keyFCREPO-2822

5.6 Cross-Domain Group Listings

  • (tick) Implementations MAY restrict support for groups of agents to local Group Listing documents.
  • If an implementation chooses to reject requests concerning remote Group Listings,

5.7 Append Mode

  • (error) In the context of a Fedora implementation, acl:Append should be understood as operations that only append, such as POSTing to a container, or performing a PATCH that only adds triples.

5.7.1 LDP-RS (Append)

  • (error) When a client is allowed to perform acl:Append but not acl:Write operations on an LDP-RS:
    • (error) A DELETE request MUST be denied
      Jira
      serverDuraSpace JIRA
      serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
      keyFCREPO-2715
    • (error) A PATCH request that deletes triples MUST be denied
      Jira
      serverDuraSpace JIRA
      serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
      keyFCREPO-2716
    • (error) A PATCH request that only adds triples SHOULD be allowed
      Jira
      serverDuraSpace JIRA
      serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
      keyFCREPO-2716
    • (error) A PUT request on an existing resource MUST be denied
      Jira
      serverDuraSpace JIRA
      serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
      keyFCREPO-2717
    • (error) A PUT request to create a new resource MUST be allowed if the implementation supports creating resources using PUT 
      Jira
      serverDuraSpace JIRA
      serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
      keyFCREPO-2717

5.7.2 LDPC (Append)

  • (error) When a client is allowed to perform acl:Append but not acl:Writeoperations on an LDPC, a POST request MUST be allowed.
    Jira
    serverDuraSpace JIRA
    serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
    keyFCREPO-2823

5.7.3 LDP-NR (Append)

  • (error) When a client is allowed to perform acl:Append but not acl:Writeoperations on an LDP-NR:
    • (error) All DELETE, POST, and PUT requests MUST be denied
      Jira
      serverDuraSpace JIRA
      serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
      keyFCREPO-2718
    • (error) A PATCH request that deletes or modifies existing content MUST be denied
    • (error) A PATCH request that only adds content SHOULD be allowed
      • because LDP-RS attached to LDP-NR are now full resources, I think this ticket should suffice for the previous 2 (Jared Whiklo )
        Jira
        serverDuraSpace JIRA
        serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
        keyFCREPO-2716

5.8 Access To Class

  • (tick) The acl:accessToClass predicate MUST be supported.
  • (tick) When an ACL includes an acl:accessToClass statement, it gives access to all resources with the specified type, whether that type is client-managed or server-managed.
  • (minus) Implementations MAY use inference to infer types not present in a resource's triples or rel="type" links in the Link header.

5.9 Inheritance and Default ACLs

  • (tick) Inheritance of ACLs in Fedora implementations MUST be reckoned along the LDP containment relationships linking controlled resources, with the following modification:
    • (error) In the case that the controlled resource is uncontained and has no ACL, or that there is no ACL at any point in the containment hierarchy of the controlled resource, then the server MUST supply a default ACL.
      • Jira
        serverDuraSpace JIRA
        columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
        serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
        keyFCREPO-2826
      • Jira
        serverDuraSpace JIRA
        columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
        serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
        keyFCREPO-2825
      • Jira
        serverDuraSpace JIRA
        columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
        serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
        keyFCREPO-2824
      • Jira
        serverDuraSpace JIRA
        columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
        serverIdc815ca92-fd23-34c2-8fe3-956808caf8c5
        keyFCREPO-2683
      • NB: acl:default  rather than outdated acl:defaultForNew should be used.
    • (error) The default ACL resource SHOULD be located in the same server as the controlled resource.

...