solid / solid/specification

Current Container Listing mechanism does not support hidden resource use case

Open
#626 7 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

topic: resource access
Dominant language
HTML
Stars
563
Forks
108
Avg merge
4d 13h
Merged PRs (30d)
3

Description

The current mechanism to list resources in a Solid container does not support an important social media use case.

Say I'm implementing a social blog service (like LiveJournal or Facebook) that allows me to specify access control on each post: public, private (only I can see and read those posts), and friends-only.
Using the current Solid spec and implementation, I cannot simply put my Posts as resources in a /blog/ Container, and set their corresponding ACL files. This is because when an un-authenticated user (or an authenticated user who is not on my Friends list) does a List Resources request on the /blog/ container, they will see all of the posts listed on my blog, even private or friends-only ones.

In other words, as a non-friend, I do GET dmitri.databox.me/blog/, I will see that it contains:

  • public post 1 (which means I have read access to it, no problem)
  • private post 2 (I can see it on the list, but get a 401 / access denied when I try to request it)
  • friends-only post 3 (again, I can see it on the list but get access denied)

This is completely un-usable, in terms of being able to implement private/hidden resources in the context of a social media app.

After a discussion with @deiu, @sandhawke and @nicola, the proposal is to:

  • Change the Solid spec dealing with listing of containers, do not show resources a user has no access to.
  • Update the relevant implementations (ldnode, etc) to match it.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the Solid specification's container-listing section and the discussion referenced in the issue. Then inspect ldnode and the other relevant implementations mentioned. Done means the specification and implementations consistently omit resources the requester cannot access.

Written by the indexing model from the issue text.

Assessment

Domain
api, backend-api-design, documentation
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.