-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
User controlled Authorization App and App launcher proposal #45
Comments
According to this blog post Service Workers! Your first step towards Progressive Web Apps Service Workers are limited to fetch from the Origin they were loaded from. (This may still make it useful for working with a Proxy server.) There used to be something called Foreign Fetch but this was removed in 2017 from Chrome, see Remove foreign fetch #1188. It could be that one can use WebWorkers for fetching remote documents, I am not sure. |
The token that we have set up does allow you to interpret what the user is.
Some things have been omitted from the token but as you can see, from this token you can deduce the app based on the origin and the user. |
Thanks for those details. I think during the teleconf we discussed quite a lot the problem of signing things with private keys made by remote apps. The problems were as follows
The idea of having a trusted key store is that this would allow:
Another advantage of this App Launcher/Keychain is that it makes the "redirect_url" used by OAuth tokens now efficient. The launcher App knows which URL was launched in which frame, and so can precisely identify the current instance as a running of that app type. See the discussion on Origins and redirect_url in issue issue 22 of Authentication Panel: how are redirect_urls authenticated. |
This was discussed on Mon 7 Oct in the Authentication Panel, see Panel notes |
How would this work with use case described in https://github.com/solid/authentication-panel/issues/31 ? |
I don't see any difference as far as access control and authentication goes between RDF and other content @elf-pavlik . I implemented a Hyper Address Book in ScalaJS that could download RDF, people's pictures linked to from their foaf files, sign HTTP-Signature headers and display all that as a single page app. |
Must have accidentally closed the "close issue button" |
@bblfish if Bob shares with Alice |
Ah I see. That could be an interesting use case for a browser plug-in. |
A requirement for Solid apps is that each App (even from a remote origin) needs to make authenticated requests for a user to resources on the Web. The problem is that if any such App must authenticate to a resource by signing headers in the case of HTTP-Sig or passing signed tokens with OAuth, those private keys or tokens can be shared by the App with other origins, which makes the authenticated user quite vague: is it the user, the App, the Origin or a friend of the Origin that is authenticating (see discussion)?
The proposal here is to allow a user to select an Authentication App whose JS is placed on an Origin it fully trusts, to deal with Apps, generate keys for them, and provide an authentication service in browser for those apps using Window.postMessage or something similar (see Information Security Stack Exchange Question: Can JavaScript from Different Origins Communicate Securely?). Given that the Auth App is also the one used to launch those apps, it will know which apps it is signing auth requests for, allowing us to solve the problem of Identifiers for Applications too.
The user can link from his WebID Profile to the trusted Authentication App like this:
With the potentially protected
</safe/authentication>
fileAnd the Authentication App can keep track of all the Apps that the user likes to use, each App
keeping info about the app, browser environment, date used, public keys, ... with something like the following, any restrictions about what it is able to do,...
The process here is the following. Alice is behind the computer, and it is hers.
the app to the left of the screen)
We then have the following exchange (numbers fit illustration below)
This could fulfill many roles, of which:
There may be better methods than
Window.postMessage
to do this. Ideally all authenticated requests could go through a browser based HTTP proxy (perhaps using Service Workers?) controlled by the App launcher. This would further enableCan this be done with current browser technology?
Note: This extends @elf-pavlik's notion of an App Authorization manager, by specifying a method for the App to actually do the authentication for other apps (using either postMessage) - and proposing to find potentially better ones (eg. ServiceWorkers?)
The text was updated successfully, but these errors were encountered: