A work-in-progress write up of usernames and accounts
We have two approaches to usernames and accounts in Webnative.
In both cases, unique accounts are represented by DIDs #did which are controlled by the user.
Usernames are the public label for accounts that people can remember, display in UI, and use to link and login in many cases.
The original version of Fission’s accounts which includes the Auth Lobby #auth-lobby is a managed username system, where every username is globally unique and can be moderated.[1]
Technically this is namespaced, with fission.name
being the DNS domain that is the root of the main Fission username system.
Every username must be compatible with DNS subdomain rules — so we inherit the restrictions on what characters and length can be used from the domain name system.
Example username: boris
Example domain: https://boris.fission.name/
There are also DIDs stored in DNS:
This is the initial root did:key that created and owns the boris
username.
Webnative App Template Usernames and Accounts
For the Webnative App Template aka WAT, the developer and their app fully control the username experience.
From GitHub: https://github.com/webnative-examples/webnative-app-template#-usernames
The hashed username is indeed persisted in DNS. When linking devices, both the full username (which includes the display name and appended DID) and the hashed name are sent.
The newly linked device then has both, and it can display a human friendly name to the user and use the hashed name to work with Webnative.
TODO: expand and pull in description with examples
WNFS File System attached to Accounts
What is displayed at username subdomains such as boris.fission.Name
is the root of the public part of the user’s public WNFS #developers:wnfs file system. If you click on userland you’ll see a list of top level directories.
So: the user’s currently published root WNFS is published in DNS, in a #dnslink record.
We can look up DNS records by convention and find the link:
-
it can also be federated so that multiple instances of naming can be separately run but interoperable. This is not yet implemented but we are happy to talk with you about running your own managed username system with custom domains. ↩︎