Hi HN,
I'm writing an web app for kicks that appeals to quite a small niche. I don't expect MAU to ever go above a thousand. I'm still dedicated to providing a good service though.
At one point I intend to add login functionality and was wondering what the "best" mechanism is.
Login with social networks is probably the easiest for users. But I'm a bit kooky and don't want to support Facebook's hegemony so that's out of the question.
Basically I see three alternatives.
1. Login with password. Another account to keep track of, but it works.
2. WebID. github.com/solid/solid appears to be going with WebID, but it's not exactly simple. And it requires that the user understands what a private key is and why they shouldn't lose it.
3. OpenID. Is this the technology of the future? From what I've read adoption is slowing down and the largest independent OpenID provider closed down a while ago (MyOpenID).
So, is there a method of authentication that is both open, decentralized and simple for the end-user?
For bearer tokens use secure, httponly cookies that have names starting with __Secure- [1]. Check Origin header to protect against CSRF. Optionally consider using token binding [2] so that cookies cannot be exported at all.
[0]: https://www.chromestatus.com/feature/5669923372138496
[1]: https://www.chromestatus.com/feature/4952188392570880
[2]: https://www.chromestatus.com/feature/5097603234529280