Bug #13019
ferméImpossible de créer un utilisateur si la racine de son idenfiant (avant @) existe déjà
100%
Description
Pré-requis: il existe déjà un utilisateur avec un identifiant titi
pour lequel Ejabberd a crée dans le domaine XMPP un compte [email protected]
Si je crée un utilisateur avec un identifiant [email protected]
il y a une erreur :
Caused by: org.silverpeas.core.chat.ChatServerException: Conflict: {"status":"error","code":10090,"message":"User [email protected] already registered"}
parce que pour Ejabberd, on extrait la partie avant le caractère @
Mis à jour par Miguel Moquillon il y a plus de 2 ans
- Statut changé de New à Feedback
Effectivement, l'identifiant pour XMPP est récupéré de celui de Silverpeas. Or comme le caractère @
a un statut particulier dans XMPP, à l'image des adresses email, seule la partie précédente au @
dans l'identifiant Silverpeas est récupérée pour former l'identifiant XMPP pour un domaine XMPP donné. Dans XMPP, comme pour les emails, deux personnes peuvent avoir le même identifiant si et seulement si ils ne sont pas du même domaine (parce que l'identifiant complet XMPP est de la forme <identifiant utilisarteur>
@<domaine XMPP>
).
Est ce que les deux utilisateurs sont du même domaine Silverpeas ? Si non, une astuce est d'associer à chaque domaine Silverpeas un domaine XMPP différent.
Mis à jour par Yohann Chastagnier il y a plus de 2 ans
Est-ce qu'une solution pourrait également être de mettre la partie derrière l'@
du login entre crochets [xxx]
?
Par exemple, [email protected]
serait transmis au serveur XMPP en toto[domain.org]
.
Mis à jour par David Lesimple il y a plus de 2 ans
Miguel Moquillon a écrit (#note-2):
Est ce que les deux utilisateurs sont du même domaine Silverpeas ? Si non, une astuce est d'associer à chaque domaine Silverpeas un domaine XMPP différent.
Oui, il n'y a qu'un seul domaine utilisateurs.
Mis à jour par Miguel Moquillon il y a plus de 2 ans
- Statut changé de Feedback à In progress...
Je vais voir en m'inspirant de la suggestion de Yohann pour encoder le arobas dans un identifiant de type mail.
Mis à jour par Miguel Moquillon il y a plus de 2 ans
- Statut changé de In progress... à Feedback
Attention, la correction ici va impacter l'existant. Les Silverpeas avec des utilisateurs qui ont des identifiants au format email vont avoir leur identifiant XMPP modifié, autrement dit un nv compte va leur être créé et tout l'historique sera perdu. Sauf évidemment s'il est possible de modifier leurs identifiants directement dans la base de données utilisée par eJabberd.
Aussi, avant de continuer sur cette voie, je voudrais savoir combien de clients utilisent le chat et combien parmi eux ont un identifiant au format email ?
Mis à jour par Miguel Moquillon il y a plus de 2 ans
- Statut changé de Feedback à Resolved
Cf. PR https://github.com/Silverpeas/Silverpeas-Core/pull/1218
Le format des JID (identifiants XMPP) est régit par la RFC 7622. Le format d'un JID d'un utilisateur est similaire à celui d'une adresse email. Parce que les JID d'un utilisateur de Silverpeas est construit à partir, entre autre, de son login, ceci peut s'avérer être problématique lorsque ce login est une adresse email. La solution adoptée jusqu'alors fut de retirer la partie domaine de l'adresse email (le caractère @
comprit). Or ceci pose problème dans le cas où le domaine de l'adresses email des utilisateurs est différent (autrement dit différent service de mail) et qu'il y a des homonymes. Ce qui s'avère être le cas ici dans ce billet.
Pour palier à ceci, un nouveau mécanisme de conversion de login des utilisateurs est introduit : tout caractères @
est encodé sous sa forme hexadécimale UTF-8 mais en tant que terme et non en tant que codepoint (sinon ça sert à rien). Le choix du mécanisme à utiliser est définit par la propriété chat.xmpp.jid.policy
dans le fichiers properties/org/silverpeas/chat/settings/chat.properties. Par défaut, c'est le mécanisme précédent qui est utilisé. Pour le changer et choisir le nouveau mécanisme, il suffit de changer la valeur de la propriété par 1
.
Mis à jour par Miguel Moquillon il y a plus de 2 ans
A la demande, j'ai modifié la valeur par défaut de la propriété chat.xmpp.jid.policy
à 1 : désormais, le caractère spécifique @
est encodé pour garder la partie domaine de l'adresse email dans le login
Mis à jour par Yohann Chastagnier il y a plus de 2 ans
- Statut changé de Resolved à Integration in progress...
Mis à jour par Yohann Chastagnier il y a plus de 2 ans
- Statut changé de Integration in progress... à Closed
- % réalisé changé de 0 à 100
Validé et intégré en 6.3