Aller au contenu

Vérifier chaque inscription Auth0 avant la création du compte

Intégration Inscriptions et authentification

Refusez une inscription Auth0 dont l'adresse ne peut pas recevoir d'emails : une Action Pre User Registration interroge PricklyMails avant de créer le compte.

Pas besoin de connecteur : à chaque inscription, Auth0 appelle l'API PricklyMails depuis une Action Pre User Registration, et une adresse qui ne peut pas recevoir d'emails est refusée avant que le compte n'existe.

Vérifier gratuitement

Pas à pas

Vérifier chaque inscription en quatre étapes

  1. Dans PricklyMails

    Créer une clé API dans PricklyMails

    1. Dans le tableau de bord, ouvrez Clés API et cliquez sur Nouvelle clé.
    2. À l'étape Environnement, choisissez d'abord Test : la clé commence par pm_test_, répond par des résultats prédéfinis, ne facture rien et ne contacte aucun serveur de messagerie.
    3. Copiez la clé dès qu'elle s'affiche : elle n'est montrée qu'une fois.

    Astuce

    L'offre Free ne compte qu'une clé : une fois que tout fonctionne, révoquez la clé de test, puis créez-en une en Production.

  2. Dans Auth0

    Créer l'Action dans Auth0

    La clé va dans les secrets de l'Action, qu'Auth0 chiffre et n'affiche plus jamais : elle reste ainsi hors du code.

    1. Dans Actions puis Library, sélectionnez Create Action, puis Create Custom Action.
    2. Saisissez un Name, par exemple pricklymails-check, puis choisissez Pre User Registration comme Trigger et Node 22 comme Runtime.
    3. Sélectionnez Create : l'éditeur de code des Actions s'ouvre.
    4. Dans la barre latérale de l'éditeur, sélectionnez l'icône en forme de clé, puis Add Secret.
    5. Saisissez PRICKLYMAILS_KEY comme Name et votre clé de test comme Value, puis sélectionnez Create.
    6. Remplacez le code de l'éditeur par le code ci-dessous, puis sélectionnez Save Draft.

    Le code demande à PricklyMails de répondre en quelques secondes (Prefer: wait) et cesse d'attendre peu après, pour qu'une inscription ne reste jamais suspendue à la réponse. Il ne refuse l'inscription que si la recommandation est remove, et la laisse passer sinon : adresse risquée, pas de réponse à temps, erreur.

    pricklymails-check.js
    const VERIFY_URL = 'https://api.pricklymails.com/api/verify'
    const REFUSAL =
        'This email address cannot receive mail. ' +
        'Check it for a typo, or use another one.'
    
    // Auth0 gives the trigger 20 seconds: wait 4 for the answer, give up at 5.
    async function recommendationFor(email, key) {
        try {
            const response = await fetch(VERIFY_URL, {
                method: 'POST',
                headers: {
                    Authorization: `Bearer ${key}`,
                    'Content-Type': 'application/json',
                    Prefer: 'wait=4',
                },
                body: JSON.stringify({ email }),
                signal: AbortSignal.timeout(5000),
            })
            if (200 !== response.status) {
                return null
            }
            const { verification } = await response.json()
            return verification?.recommendation ?? null
        } catch {
            return null
        }
    }
    
    exports.onExecutePreUserRegistration = async (event, api) => {
        const email = event.user.email
        const key = event.secrets.PRICKLYMAILS_KEY
        if (email && 'remove' === (await recommendationFor(email, key))) {
            api.access.deny('undeliverable_email', REFUSAL)
        }
    }
    
    Comment l'API répond en un seul appel

    Astuce

    Avant de déployer, vous pouvez lancer le code depuis l'éditeur : sélectionnez Test (l'icône de lecture) dans sa barre latérale, remplacez l'email de l'utilisateur dans le payload par invalid@example.com, puis sélectionnez Run. Les résultats montrent les étapes suivies par l'Action.

  3. Dans Auth0

    Activer l'Action dans Auth0

    Auth0 n'exécute que la version déployée d'une Action, et seulement une fois qu'elle est placée dans le flux d'un déclencheur.

    1. Dans l'éditeur de code, sélectionnez Deploy.
    2. Allez dans Actions puis Triggers, puis sélectionnez Pre User Registration.
    3. Dans la section Add Action, à droite, sous Custom, glissez pricklymails-check dans le flux, entre Start et Complete.
    4. Sélectionnez Apply.

    Attention

    Les secrets suivent les versions de l'Action, et une modification ne s'applique qu'une fois déployée : quand vous remplacez la clé de test par votre clé live, sélectionnez de nouveau Deploy.

  4. Dans Auth0

    Essayer avec la clé de test

    1. Inscrivez-vous avec une adresse qui commence par invalid, comme invalid@example.com : la clé de test répond remove, et l'inscription est refusée.
    2. Inscrivez-vous avec une autre adresse, comme valid@example.com : le compte est créé.
    3. Là où vous avez rangé la clé, remplacez-la par une clé créée en Production, qui commence par pm_live_ : dès lors, chaque inscription est vérifiée pour de vrai et facturée comme toute vérification.

Ce que devient chaque inscription

Le code lit la recommandation que l'API donne pour l'adresse, la même que dans le rapport d'une liste.

À retirer

Refusée : l'adresse n'existe pas, son domaine ne peut pas recevoir d'emails, ou elle est jetable.

Auth0 arrête l'inscription sur-le-champ et ne crée aucun compte. D'après sa documentation, le message passé à api.access.deny peut être affiché tel quel à la personne qui s'inscrit, et la raison, undeliverable_email, est conservée dans les journaux de votre tenant.

À revoir

Acceptée : domaine qui accepte toutes les adresses, adresse générique comme contact@, ou serveur qui n'a pas répondu. L'adresse peut fonctionner.

À envoyer

Acceptée : l'adresse est valide, ou hébergée chez un grand fournisseur qui accepte toutes les adresses.

Pas de réponse à temps
Auth0 accorde 20 secondes à chaque exécution du déclencheur, au-delà desquelles l'inscription se solde par une erreur, et ses directives demandent un délai d'expiration de moins de 10 secondes pour chaque requête HTTP. Le code attend la réponse 4 secondes et abandonne au bout de 5 : sans réponse, il laisse passer l'inscription, bien en deçà de ces deux limites.

Questions fréquentes

Quelles inscriptions Auth0 l'Action vérifie-t-elle ?

Celles qui passent par une connexion Database, avec un email et un mot de passe par exemple, ou par une connexion Passwordless : Auth0 n'exécute le déclencheur Pre User Registration que pour elles, avant la création de l'utilisateur. Une personne qui s'inscrit par une connexion sociale ou d'entreprise n'y passe jamais, pas plus qu'une importation groupée d'utilisateurs : ces comptes sont créés sans vérification. Une inscription sans adresse email, par numéro de téléphone par exemple, est laissée passer par le code.

Où voir les inscriptions refusées par l'Action ?

Dans Monitoring puis Logs : une inscription refusée y figure comme un événement Failed Signup, avec la raison que le code passe à api.access.deny, undeliverable_email. Sélectionnez l'événement, puis la vue Action Details, pour voir comment l'Action s'est exécutée et les erreurs éventuelles.

Et si le déclencheur exécute déjà d'autres Actions ?

Auth0 les exécute l'une après l'autre, dans l'ordre où elles sont placées dans le flux, et un appel à api.access.deny arrête l'inscription sur-le-champ : aucune Action suivante ne s'exécute. Les 20 secondes accordées par Auth0 valent pour chaque exécution du déclencheur, toutes ses Actions comprises, et le code en prend 5 au plus. Placée en premier, pricklymails-check refuse une adresse avant que les autres ne s'exécutent.

Existe-t-il une extension PricklyMails pour Auth0 ?

Non, et il n'y a rien à installer : le code ci-dessus appelle l'API PricklyMails avec votre clé.

Ces marques appartiennent à leurs propriétaires respectifs. Les citer n'implique aucun partenariat.

Vérifiez votre liste avant votre prochain envoi.

1 000 jetons offerts à l'inscription, sans carte bancaire. Ensuite, vous ne payez que les réponses.