Is it possible to use Discourse with SSO and email addresses which are not unique?
That means users have multiple accounts with different usernames but same email addresses.
No, emails are unique identifiers for users in Discourse and this is fundamental to all identity in the system.
A work around for many people is to use +addressing, like user+joe@gmail.com, user+pat@gmail.com, and so on. O all email providers support that, but most do.
@pfaffman how exactly is that going to help them there? By disambiguating? That is true, when you have
user@example.com
you could change it to
user+secondary@example.com1
It’s often useful to have multiple accounts, and using +addressing lets you do that without creating multiple email
Addresses.
User+whatever@gmail.com will get delivered to user@gmail.com. User@gmail.com1 won’t let them create an account.
Oh, but SSO was the point of this thread, so it’s not clear that my solution will help here. They’d still need to make every email address unique, one way or another.
Je suis incroyablement en retard pour cette fête, mais si vous utilisez votre propre système SSO (par exemple, pas Google/GitHub/etc.), alors mon plan est d’utiliser l’e-mail de l’utilisateur, mais d’insérer un +nom d'utilisateur avant le @.
Au cas où cela serait utile à quelqu’un, c’est notre plan actuel.
Encore une fois, comment cela fonctionnerait-il avec SSO ?
Nous implémentons notre propre fournisseur SSO pour Discourse, ce qui signifie que le système peut être adapté pour envoyer un e-mail unique à Discourse (par exemple, user@gmail.com est remplacé par user+internal_id@gmail.com). Lorsqu’un utilisateur se connecte, il ne voit rien de tout cela, car il s’authentifie auprès de notre système SSO en utilisant son nom d’utilisateur.
En fin de compte, cette solution n’est pas parfaite, car elle ne permet pas d’envoyer des e-mails à tout le monde, mais elle évite les conflits réels d’adresses e-mail dans les systèmes où l’e-mail n’est pas unique. (Malheureusement, l’application spécifique sur laquelle je travaille impose moins de restrictions sur les noms d’utilisateur que Discourse, ce qui rend les conflits possibles, bien que très improbables à ce jour.)
Je pense que la meilleure solution à long terme pourrait consister à développer un plugin qui stocke une adresse e-mail de notification distincte, et à ce que le SSO transmette une adresse e-mail unique (voire fictive ?) ainsi qu’une adresse pour les notifications qui n’a pas besoin d’être unique. Je ne suis pas encore certain que cela ne cassera pas gravement le système, mais environ 30 minutes d’examen rapide du code suggèrent que c’est plausible, même si cela pourrait s’avérer fastidieux.