jqueiroz / lojban.io

A free and opensource platform for studying the artificial language Lojban.
https://lojban.io
BSD 3-Clause "New" or "Revised" License
81 stars 6 forks source link

Allow signing in or registering without a google account #8

Open lboklin opened 4 years ago

lboklin commented 4 years ago

Users who do not use any Google services cannot access the practice feature.

jqueiroz commented 4 years ago

Thank you @lboklin for the feedback!

Would allowing sign-in using alternative providers (e.g. Microsoft, GitHub, etc) resolve your concerns?

Also wondering if there is an identity provider which is broadly used by people who care deeply about privacy. GitHub might be acceptable, but it is biased towards programmers.

(Incidentally, the practice feature only requires signing in for decks. For courses, anyone can practice).

lboklin commented 4 years ago

While I clearly have a GitHub account, I would want for anyone to be able to use the service even if not registered with any of the large corporations. By taking a quick look, I see OpenID as a possible solution. Simple registration via e-mail would be perfectly acceptable as well.

jqueiroz commented 4 years ago

Thanks, that makes sense!

I integrated with OpenID Connect, and used it to support Microsoft accounts. Unfortunately, there are very few providers supporting OpenID Connect right now, and none of them could be considered independent of large corporations.

So I am planning to do the following:

  1. Allow users to sign in using external identity providers, such as Microsoft and Google (as is currently done). This is the preferred approach, and will likely be chosen by most users.
  2. BUT, as a fallback, offer the possibility of signing in using an arbitrary handle (just a handle, without a password). i. This is not really authentication, but merely a way of specifying a custom key (in the sense of identifier) to which one's progress will be persisted. An appropriate disclaimer will be placed indicating that anyone who shares your handle, or anyone who knows your handle, will be able to interfere with "your" progress. ii. Additionally, there will be an option to sign in using an automatically generated unique identifier. Users will be provided with an option to export this identifier, and will be asked to safely store a copy of this identifier if they do not wish to lose their progress.

Approach (2.ii) corresponds to anonymous sign-in with a secret (instead of e.g. a private/public key pair). I feel that this should suffice to protect something as trivial as the progress of users on a deck, while at the same time respecting their privacy and not placing the burden and responsibility of storing passwords (which will inevitably be reused across different services, despite all warnings) on me.

Do you think that this would address your concerns, while also providing an acceptable user experience? For context, the only purpose of sign-in is having per-user storage of scores for each card, so I do not see significant concerns with the lack of a passwords. Also, this is just a fallback, and users who want actual authentication could always opt for an external provider. But I could be missing something.


For context, as mentioned on the reddit thread, I would strongly prefer to avoid handling passwords myself (even if properly salted/pbkdf2'd).

Pasting the relevant piece here, for reference: I also intend to share the database with a few trusted Lojbanists, to mitigate the bus factor. Storing personally identifiable information and/or passwords (even salted) would introduce additional considerations.


Hopefully, descentralized identity will be a reality some day.

tbodt commented 2 years ago

How about localStorage?