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
How users find which server they need to talk to? #125
Comments
Potential solutions for this are WebFinger or the Mozilla Token Server (which assigns users to a node). |
One thing we had in mind is also to use a kinto interface for storage service providers (such as Box.net/Dropbox, BaiduYun) |
After discussion the basic idea would be the following:
An idea could be to use a kinto router that gives back HTTP 307 with the right URL for a given personal bucket. |
We could first try to hit a webfinger URL and fallback on FxA if no webfinger document is found. |
👍 |
I think discovery in FxA is based on BrowserID? So:
So I think what a user has to do to self-host and be entirely free from any hard-coded Mozilla URLs, is to become their own primary identity provider for BrowserID, plus FxA, plus Kinto? There is still a difference between remoteStorage and Kinto in that remoteStorage redirects the user to https://remotestorage.io/get/ which lists multiple options for getting an account on a storage provider somewhere, and I think Kinto currently would default silently to Mozilla's instance. So you could insert a page in the UI saying 'You have no Kinto server linked to me@example.com yet, do you want to link Mozilla's server?', and then that would be a point where multiple options could be offered. Of course, the user experience is easier when defaulting to Mozilla-hosted is silent. But I think the difference boils down only to whether this is silent or not; in itself, BrowserId already implements decentralized discovery. |
On Kinto side we are not using BrowserId but Bearer Token for FxA. |
Kinto itself is not tied to any authentication mechanism. We are currently supporting FxA via OAuth 2.0 bearer tokens, and could also support BrowserID if needed. Since the current best practice to connect to FxA is to use OAuth2.0, and this is completely unrelated to how the discovery works, I think we need to find a better way to support that. Web Finger seems an option here, especially because it's defined in an RFC and easy to implement. I have left to find if there are other easy ways to do this. I'm thinking about DNS TXT records or files that an user could deposit on their domain, but that restricts to people who owns some domains. In the case we don't find such document, we might also fallback to a repository (operated by mozilla) where users link to their kinto instance. |
It is what I had in mind, we could operate this repository using a Kinto server. |
In any case, this repository should mimics the semantics we're using for user discovery. e.g. if we use webfinger for discovery, then we should have something with the same semantics that runs on our infrastructure. |
My take on this, is to be able to talk to any kinto server and access your data. |
Right, BrowserID decentralizes identity, but not service discovery, so we still need something like WebFinger. So WebFinger could announce:
WebFinger links need a "rel" attribute to indicate what they mean. For remoteStorage discovery, we use this: https://tools.ietf.org/html/draft-dejong-remotestorage-05#section-10 - might serve as a basis for something generic enough to also discover servers with The remoteStorage spec currently used the "http://tools.ietf.org/html/rfc6749#section-4.2" property for announcing the dialog URL for OAuth2 Implicit Grant, but if we want a "discover the user's storage server of any kind" mechanism, we can add a longer list of possible auth mechanisms. |
For completeness, here is the proposal I submitted for an outreachy intern: The Kinto project aims to bring storage instances to everyone, Currently, Kinto is thought as a centralized server: there is one This doesn't resonates well with multiple goals we have: scalability There are different use cases:
Here are the different steps that could allow these scenarios:
** It is also possible to use the same mechanism to discover the FxA In terms of code changes, here is what it looks like (roughtly step
|
WebFinger scares me a little because it seems to imply to me that the workflow would be a user entering their webfinger identity, and getting back the store for that user. If this interpretation is correct, that may be distributed, but it's very 1:1. What happens when I want to Kinto into some group resource, for example a Shared Calendar? If we used something like Host Meta - 4.2 Resource-Specific information, a service could let a user log in with their- say- email, and then query whatever hosts they wanted to see if there were I suppose each Kinto "resource" could just get it's own WebFinger ID. I'll try to find more time to better consider and understand the proposals above, but I see some mirroring of the concerns I have about tightly coupling identities to Kinto data-pools. |
See @oak11's article about how servers will be discovered. http://www.servicedenuages.fr/en/discovery-of-kinto-servers |
Archiving old issues. |
We need to find a way to have users chose which server they want to use.
There are a lot of exploration to do here around this idea, but thinking about that while it's not too late and that we don't have a completely centralized service would prevent us from redoing the same error some other projects did.
The text was updated successfully, but these errors were encountered: