Date de publication du RFC : Février 2005
Auteur(s) du RFC : K. Zeilenga (OpenLDAP Foundation)
Chemin des normes
Première rédaction de cet article le 20 juin 2008
Beaucoup de protocoles Internet ont besoin de comparer des noms, par exemple pour tester leur égalité avant une authentification de ce nom. Si les noms sont en Unicode, il est préférable de les normaliser avant la comparaison, pour que le résultat de celle-ci ne soit pas trop déroutant pour l'utilisateur. C'est le but de SASLprep, normalisé dans ce RFC.
Le RFC sur SASLprep est très court car SASLprep est juste un profil de stringprep (normalisé dans le RFC 3454). Stringprep était l'algorithme général de normalisation des noms à l'IETF. Il ne spécifiait pas tous les détails de la normalisation effectuée, laissant ceux-ci à des profils comme nameprep (RFC 3491, utilisé dans les IDN) ou bien notre SASLprep. Stringprep ayant depuis été abandonné (cf. RFC 7564), ce RFC 4013 a été remplacé par le nouveau mécanisme du RFC 7613.
SASLprep est conçu pour l'utilisation dans le contexte de l'authentification, notamment pour SASL (RFC 4422). L'idée est de passer les noms et les mots de passe à travers SASLprep avant toute comparaison, pour que le résultat de celle-ci corresponde aux attentes de l'utilisateur (section 1).
Le profil lui-même est décrit dans la section 2. Par exemple,
SASLprep utilise la normalisation Unicode NFKC
(section 2.2 de notre RFC et section 4 du RFC 3454). Ainsi, comme l'illustre les exemples de la section 3,
la chaîne U+2168
(Ⅸ, chiffre romain 9)
sera transformée en la chaîne « IX », qui a la même
signification. Sans SASLprep, un utilisateur dont le nom comporterait
ce caractère Unicode aurait du mal à se loguer ! La section 2 spécifie aussi (section 2.3) les caractères interdits
par SASLprep, comme les caractères de contrôle.
On peut tester cet algorithme sur Unix avec
la commande idn
de la GNU
libidn et son option --profile
:
% echo Café | idn --quiet --stringprep --profile SASLprep Café % echo pi² | idn --quiet --stringprep --profile SASLprep pi2
Dans le premier exemple, on note que SASLprep est sensible à la casse (qui n'a pas été modifiée). Dans le second exemple, l'exposant 2 dans « pi au carré » a été remplacé par un 2 ordinaire, conséquence de la normalisation NFKC. Un hypothétique mot de passe « pi² » serait donc équivalent à « pi2 ».
Une mise en œuvre de SASLprep, sous forme d'une bibliothèque utilisable depuis vos programmes, figure dans la GNU SASL Library.
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)