Validation des courriels¶
Cette page présentera un algo de validation des mails pour limiter les bloquages que représente la validation de l'adresse de courriel à l'enregistrement d'une application. Cette algorithme possède ces paramètres:- un secret connu uniquement du service, S,
- l'adresse de courriel à valider C
- un identifiant pour l'objet lié à ce courriel, I,
- la période entre deux notifications de validation du mail, pN,
- la durée de validité du compte sans validation du mail, dV,
- une URL pour la page de validation, U.
- 1. La page d'enregistrement collecte l'adresse de courriel. Cette adresse est marqué comme non validé bien que rattaché à l'objet I et deux tâches de fond sont configurés, toutes deux identifiées par la paire (I, C):
- une tâche périodique d'envoi de notification à début immédiat, et périodicité pN envoyant un lien L formaté de la sorte à l'adresse de courriel C:
Q = "id=" + urlencode(_I_) + email=" + urlencode(_C_) + "¬OnOrAfter=" + urlencode(iso8601(now + _dN_)) _L_ = _U_ + "?" + Q + "&signature=" + base64(hmac-sha1(_S_, Q))
- une tâche ponctuelle de suppression du compte invalide à la date now+dN
- une tâche périodique d'envoi de notification à début immédiat, et périodicité pN envoyant un lien L formaté de la sorte à l'adresse de courriel C:
- 2. L'utilisateur reçoit le courriel de notification et clique sur le lien de validation
- 2.a. Il a cliqué avant la date limite: les paramètre d'URL sont validés, l'adresse de courriel C est marqué comme valide dans son rattachement à l'objet I. Toutes les tâches de fond liés à la paire (I, C) sont supprimés.
- 2.b. Il a cliqué après la date limite, la validation des paramètres d'URL par la signature hmac-sha1 échoue, un message d'erreur est affiché expliquant le dépassement du délais.
- 3. La date now+dN advient sans qu'aucune validation n'ai été effectuée. Le rattachement du courriel C à l'objet I est défait et les tâches liés à cette invalidation sont effectués (suppression du compte par exemple), toutes les tâches liés à la paire (I, C) sont supprimées.
Durant toute la période now - now+dN, l'application pourra se servir de l'adresse C sans problème.