Replies: 6 comments 11 replies
-
The good thing about discussions here is that they are threaded, which should make it easier to follow conversations. Here is a thread to keep track of other relevant aspects of the discussion. |
Beta Was this translation helpful? Give feedback.
-
I see them as authorizations to access not 'authorization to authenticate'. To be more precise End-user is delegating subset of their access rights to some Client (application) they use. So we have case of access delegation. Client is only authorized to access the subset of resources, access to End-user delegated to the client.
agreed with this specific part of that statement.
I can see this proxy approach as a path to explore, at the same time this is only one of possible approaches. |
Beta Was this translation helpful? Give feedback.
-
@bblfish, can you elaborate on how browser clients (SPAs in particular) would sign those requests? As I understand it, they would need to have posession of some private key, which they cannot in an insecure environment. But I'm not yet familiar with HTTPSig, so maybe I'm missing something here. |
Beta Was this translation helpful? Give feedback.
-
Could ideas from the Confidential Data Storage project help out? https://identity.foundation/confidential-storage/ What are your thoughts on WebID-DIDs in this scenario? https://github.com/decentralized-identity/ethr-did-resolver Also how do CRDTs fit? Could data write locally and utilize methods of syncing up to LDP using libraries like LevelJS? It would be interesting to see CRDTs that help increase scalability and persistence but be controlled by the WAC agent in the client side application as well. You could even sync the changes in ACL first with Service Workers and Background Sync when users that live in countries with poor internet utilize Solid Protocols. |
Beta Was this translation helpful? Give feedback.
-
Last week we discussed during the call cases where the client runs somewhere 'in the cloud', as well as native clients which run on the user's device but not in a web browser. Suggested |
Beta Was this translation helpful? Give feedback.
-
As per @csarven 's request at last weeks Web Access Control Meeting I drew up a diagram to illustrate one workflow. I may add an other diagram later for some other workflows. There are 5 steps starting from the App requesting the Wallet Agent to sign a request header for it. Not all of the arrows require an HTTP connection. For example it is to be assumed that the Wallet has the rules for the App cached locally. |
Beta Was this translation helpful? Give feedback.
-
Currently we have been using the WAC ontology to allow the resource Guard to decide whether a given request is allowable.
But @elf-pavlik and @justinwb and others have regularly brought up another form of authorisation in calls: client authorization. The idea is that a user may wants to limit where a client is authorised to authenticate to. For example: trying a new app, one may be comfortable at first only allowing it to access some part of one's Solid pod. Later one may be happy to extend it to larger spaces. Another example: One may be happy for a banking app to work with one's banks, but not elsewhere. etc... These types of use cases of course are client side authorizations - authorization to authenticate - not server side authoritations: authorizations to access.
We want to limit which agents access which set of resources in what modes, but from the perspective of a Wallet handing out signatures.
So in the case of the Launcher App - which is just a specific Self Sovereign Identity Wallet - the LA needs to decide when to sign an HTTPSig header for a client. So it needs to look into a database of rules for the App, presumably published on the user's POD.
Rules could be
(here I am assuming we have a way to describe sets of resources and their children, that would replace the use of
*
).The above rule should not be confused with the rule linkedto via the
Link: <.acl>; rel="acl"
header, from resources inside</testing/app1/*>
. Those could just refer to the agent directly without any mention of the apps (s)he wishes to use, and only describe them indirectly by key.This rule used by the Guard, need not worry at all about what client is requesting access. And that is a good thing, because we want to people to choose clients easily without having to update access control resources everywhere on the web. It should be up to the user's Wallet (a.k.a keychain) to decide what signatures to give out to which apps, by applying rules written out and accepted by the user.
Beta Was this translation helpful? Give feedback.
All reactions