Skip to content

features

Vérification

Confirmez l'identité des membres avec Discord OAuth2 et des contrôles de sécurité multicouches. Comprenez le flux de vérification complet, chaque contrôle de sécurité, la collecte de données, les options de personnalisation et le mode widget.

Vue d'ensemble

La vérification est la fonctionnalité principale de Restore Hub. Lorsqu'un membre souhaite rejoindre votre serveur, il visite votre page de vérification, s'autorise avec Discord, passe les contrôles de sécurité et reçoit le rôle vérifié. L'ensemble du processus prend quelques secondes pour les utilisateurs légitimes tout en bloquant les bots, les alts, les utilisateurs de VPN et autres menaces.

Le flux de vérification peut être déclenché à partir de deux sources : un serveur Discord (le flux standard où les membres cliquent sur un lien dans votre serveur) ou un widget de site web (un widget JavaScript intégrable pour les sites externes). Les deux flux utilisent le même pipeline de sécurité.

Le flux de vérification complet

Voici l'ordre exact des opérations lorsqu'un membre clique sur votre lien de vérification. Chaque étape se déroule de manière séquentielle - si l'une des vérifications échoue, le flux s'arrête et le membre reçoit un message de blocage/d'erreur.

  1. Chargement de la page - session créée - Le membre visite votre URL de vérification (restorehub.net/s/votre-slug ou verify.votredomaine.com). RestoreHub crée un identifiant de session unique et enregistre un événement de visualisation de page avec son IP, son agent utilisateur, son type d'appareil, son système d'exploitation, son pays et l'URL de référence.
  2. Contrôle préalable à l'authentification 1 - Liste blanche - Si le serveur a des règles de liste blanche (IP, ID utilisateur, empreinte digitale, pays, ASN), Restore Hub vérifie si le visiteur correspond à l'une d'entre elles. Les visiteurs sur liste blanche contournent TOUS les contrôles de sécurité ultérieurs et passent directement à OAuth2.
  3. Contrôle de préautorisation 2 - Pare-feu - Si le pare-feu est activé (Premium+), Restore Hub vérifie l'IP, le pays, l'ASN, l'empreinte du navigateur et d'autres attributs du visiteur par rapport à toutes les règles du pare-feu. Si une règle correspond, le visiteur est immédiatement bloqué.
  4. Contrôle préalable à l'authentification 3 - Restrictions par pays - Si le serveur a configuré des pays autorisés ou bloqués, le pays du visiteur (dérivé de la géolocalisation de l'IP) est vérifié. Vous pouvez opérer en mode autorisation (seuls les pays listés peuvent vérifier) ou en mode blocage (les pays listés sont refusés).
  5. Contrôle préalable à l'authentification 4 - Détection VPN/Proxy/Tor/Datacenter - Si le blocage VPN est activé (Premium+), l'IP du visiteur est vérifiée par rapport à la base de données interne d'intelligence IP de Restore Hub. Celle-ci couvre les nœuds de sortie VPN, les serveurs proxy, les nœuds de sortie Tor, les IP des centres de données/hébergeurs et les plages de faux noms. Aucun appel d'API externe n'est effectué - toutes les données sont locales.
  6. Contrôle de préautorisation 5 - Captcha - Si le captcha est activé, le visiteur doit résoudre un défi Turnstile Cloudflare (invisible ou géré) avant de continuer. Cela se produit avant OAuth2 pour empêcher les robots d'accéder à la page d'autorisation de Discord.
  7. Redirection OAuth2 - Le visiteur clique sur le bouton "Vérifier" et est redirigé vers la page d'autorisation OAuth2 de Discord. Les champs d'application demandés sont les suivants : identification (ID utilisateur, nom d'utilisateur, avatar), email (adresse email), guildes (liste des serveurs auxquels ils appartiennent), et guildes.join (possibilité de les ajouter à un serveur).
  8. Consentement et rappel OAuth2 - Le membre autorise l'application. Discord le redirige vers l'URL de rappel de Restore Hub avec un code d'autorisation. Restore Hub échange le code contre des jetons d'accès et de rafraîchissement, puis récupère le profil Discord, l'email et la liste de guilde du membre.
  9. Contrôle post-OAuth 1 - Liste noire - L'identifiant Discord du membre est vérifié par rapport à votre liste noire personnelle. Si c'est le cas, la vérification est rejetée.
  10. Contrôle post-OAuth 2 - Âge du compte - Si un âge minimum de compte est défini (par exemple, 30 jours), Restore Hub extrait la date de création du compte du flocon de l'ID utilisateur Discord et vérifie si le compte est suffisamment ancien.
  11. Contrôle post-OAuth 3 - Détection des altérations - Si la détection d'alt est activée (Premium+), Restore Hub compare l'empreinte digitale du navigateur du membre (canvas, WebGL, contexte audio, spécifications de l'appareil) à tous les membres précédemment vérifiés sur vos serveurs. Si une empreinte correspondante est trouvée sous un autre ID utilisateur Discord, elle est signalée comme un compte alt potentiel.
  12. Attribution des rôles - Toutes les vérifications ont été effectuées. Restore Hub utilise la portée OAuth2 guilds.join pour ajouter le membre au serveur (s'il n'y est pas déjà) et lui assigne le rôle vérifié configuré en utilisant l'API REST du bot. Le membre est maintenant vérifié.
  13. Stockage des données - Les données Discord du membre, les jetons OAuth2 (cryptés), les métadonnées du réseau, les métadonnées de l'appareil et les empreintes digitales du navigateur sont stockés. Les jetons permettent une extraction future. Tous les champs sensibles (IP, email, jetons) sont cryptés au repos.

Contrôles de sécurité - Référence détaillée


|---|---|---|---|
| Règles de pare-feu - Pre-OAuth (2ème) - Premium+ - Oui - ajout de règles par IP, ID utilisateur, empreinte digitale, pays, ASN - Oui - 7 types de règles (IP, pays, ASN)
| Règles de pare-feu | Pre-OAuth (2nd) | Premium+ | Oui - 7 types de règles (IP, Pays, ASN, Empreinte digitale, ID utilisateur, ID serveur, Région) |
| Restrictions sur les pays | Pre-OAuth (3rd) | All | Yes - allow mode or block mode with ISO country codes |
| Détection de VPN/Proxy | Pre-OAuth (4ème) | Premium+ | Activer/désactiver ; interruptions séparées pour Tor et le blocage du centre de données
| Captcha - Pré-authentification (5ème) - Tous - Choisissez Aucun ou Turnstile de Cloudflare - Liste noire - Post-authentification (5ème) - Tous
| Liste noire - Post-OAuth (1ère) - Tous - Gérée via le tableau de bord ou la commande /blacklist
| Âge du compte | Post-OAuth (2e) | Tous | Définir l'âge minimum en jours (0 = désactivé) |
| Détection d'altération - Post-OAuth (3rd) | Premium+ | Activer/désactiver ; action configurable (bloquer, marquer, notifier) |

Les champs d'application d'OAuth2 et ce qu'ils permettent de faire

Lorsqu'un membre s'autorise via Discord OAuth2, Restore Hub demande quatre champs d'application. Chaque champ d'application permet d'activer une fonctionnalité spécifique :

| Le Hub Restore a besoin d'un accès à l'information sur les droits d'auteur et les droits de propriété intellectuelle
|---|---|---|
| Identification - ID utilisateur, nom d'utilisateur, nom d'affichage, avatar, bannière, couleur d'accentuation, locale, statut MFA, type de prime, drapeaux publics
| Adresse email | Adresse email et si elle est vérifiée | Corrélation de la détection des altérations, contact pour les alertes, enrichissement des données
| Guildes : Liste de tous les serveurs dans lesquels le membre se trouve (ID, nom, icône, drapeau de propriétaire, autorisations) | Règles de pare-feu basées sur l'ID du serveur, analyses interserveurs, validation de la place de marché
| guildes.join | Possibilité d'ajouter un membre à un serveur en son nom | Ajout de membres à des serveurs cibles pendant les tirages et l'exécution des commandes sur la place de marché |

Astuce : La portée de guildes.join est ce qui rend possible l'extraction de membres. Lorsqu'un membre vérifie, il accepte d'être ajouté aux serveurs. Restore Hub stocke le jeton OAuth2 (crypté) et l'utilise plus tard lorsque vous lancez une extraction.

Données collectées lors de la vérification

Restore Hub recueille des données complètes lors de la vérification pour alimenter les fonctions de sécurité, d'analyse et d'intelligence. Voici une analyse complète de chaque point de données :

  • Profil Discord : iD utilisateur, nom d'utilisateur, nom d'affichage, hachage de l'avatar, hachage de la bannière, couleur d'accentuation, locale, type premium/Nitro (aucun, classique, nitro, basique), drapeaux publics (badges), statut MFA, date de création du compte (à partir du flocon de neige), drapeau d'email vérifié, drapeau de téléphone vérifié
  • Courriel : adresse électronique (cryptée au repos), statut de vérification
  • Guildes : tableau des objets de guilde auxquels appartient le membre (utilisé pour les règles de pare-feu de l'ID de serveur et les renseignements interserveurs)
  • Jetons OAuth2 : jeton d'accès et jeton de rafraîchissement (tous deux cryptés), date d'expiration du jeton
  • Réseau : Adresse IP (cryptée), code pays, code région, ville, ASN, nom du FAI, drapeau VPN, drapeau proxy, drapeau Tor, drapeau centre de données, drapeau cellulaire
  • Dispositif : chaîne de l'agent utilisateur, type d'appareil (bureau/mobile/tablette), système d'exploitation, résolution d'écran, langue, fuseau horaire
  • Matériel : Nombre de cœurs de processeur (hardwareConcurrency), mémoire de l'appareil (GB), fournisseur du GPU (WebGL UNMASKED_VENDOR), rendu du GPU (WebGL UNMASKED_RENDERER), profondeur des couleurs, support tactile
  • Navigateur : cookies activés, drapeau Do Not Track, nombre de plugins, nombre de polices détectées, type de connexion (4g/3g/2g), vitesse de liaison descendante de la connexion (Mbps)
  • Empreintes digitales : empreinte digitale composite du navigateur, empreinte digitale individuelle du canevas, empreinte digitale WebGL, empreinte digitale AudioContext
  • Référent : l'URL qui a renvoyé le membre à la page de vérification (le cas échéant)

Avertissement : Toutes les informations personnelles identifiables (adresses IP, adresses e-mail, jetons OAuth2) sont cryptées au repos à l'aide d'AES-256. Sur les plans Premium+, les propriétaires de serveurs peuvent voir les données détaillées des membres dans la page de détails des membres. Sur le plan Free, seules les informations de base du profil Discord sont visibles.

Pages de vérification personnalisées

Chaque serveur dispose d'une page de vérification personnalisable. Vous pouvez la personnaliser pour qu'elle corresponde à l'identité de votre communauté. Toutes les options de personnalisation sont configurées dans les paramètres du serveur sous "Verify Page" ou via l'objet JSON VerifyPageConfig.

| Option de la description de l'option
|---|---|
| Image de profil - Une image carrée affichée au-dessus du bouton de vérification (le logo de votre communauté)
| Image de la bannière - Une image large en haut de la page - Une vidéo qui joue dans la zone de la bannière (MP4/WebM URL)
| Vidéo de la bannière | Une vidéo qui se joue dans la zone de la bannière (MP4/WebM URL) |
| Couleur d'arrière-plan | Couleur unie pour l'arrière-plan de la page (code hexadécimal) | Image d'arrière-plan
| Image d'arrière-plan - URL d'une image d'arrière-plan en pleine page - URL d'une vidéo d'arrière-plan en pleine page
| Vidéo d'arrière-plan | Vidéo d'arrière-plan en boucle sur toute la page (MP4/WebM URL) |
| Famille de polices - Nom des polices Google (par exemple, "Inter", "Poppins", "JetBrains Mono")
| Couleur du texte - Couleur hexagonale pour tout le texte de la page
| Couleur du bouton | Couleur hexagonale unie pour le bouton de vérification |
| Gradient du bouton | Chaîne de gradient CSS pour le bouton de vérification (remplace la couleur unie) | CSS personnalisé
| Custom CSS | CSS brut injecté dans la page pour une personnalisation avancée |
| Liens sociaux | Tableau d'objets {platform, url} rendus sous forme d'icônes sous le bouton de vérification | Message de réussite
| Message de succès - Message personnalisé affiché après une vérification réussie
| Message d'erreur - Message personnalisé affiché en cas d'échec de la vérification
| Message d'erreur : message personnalisé affiché en cas d'échec de la vérification
| Message d'erreur - Message personnalisé affiché en cas d'échec de la vérification
| URL de la musique - URL de la musique de fond diffusée sur la page de vérification - URL de la musique de fond diffusée sur la page de vérification

Conseil : Vous pouvez prévisualiser votre page de vérification personnalisée dans le tableau de bord avant de la mettre en ligne. Utilisez le bouton "Aperçu" dans les paramètres du serveur.

Mode Widget - Vérification sur votre site web

Au-delà du flux de vérification standard basé sur Discord, Restore Hub propose un widget JavaScript que vous pouvez intégrer sur n'importe quel site web. Cela permet le SSO (Single Sign-On) Discord sur votre propre site - les membres vérifient à travers votre site et obtiennent un rôle dans votre serveur Discord.

Le mode widget utilise le même pipeline de sécurité (pare-feu, détection VPN, captcha, détection des altérations) que la vérification standard. La seule différence est l'endroit où le membre commence le flux.

  1. Activer le widget - Dans les paramètres du serveur, allez dans l'onglet Widget et activez-le.
  2. Configurer les origines autorisées - Ajoutez les domaines dans lesquels le widget sera intégré (par exemple, https://yoursite.com). Cela permet d'éviter que le widget ne soit utilisé sur des sites non autorisés.
  3. Personnaliser le bouton - Définissez le texte du bouton (par défaut : "Se connecter avec Discord"), la couleur du bouton et la couleur du texte.
  4. Intégrer le script - Copiez la balise <script> fournie et collez-la dans le code HTML de votre site web. Le widget affiche un bouton qui déclenche le flux Discord OAuth2 dans une fenêtre contextuelle.
npm install @restorehub/widget

import { verify } from "@restorehub/widget" ;
const result = await verify("your-server-slug") ;

URL de vérification

Les membres accèdent à votre page de vérification par l'un des deux formats d'URL suivants :

  • URL de la balise : restorehub.net/s/votre-communauté - Installation instantanée, pas de DNS requis. Le Slug doit être composé uniquement de lettres minuscules, de chiffres et de traits d'union.
  • Domaine personnalisé : verify.yourdomain.com - Nécessite un enregistrement CNAME pointant vers cname.restorehub.net. Disponible sur les plans Business+. SSL automatique via Let's Encrypt.

Statut des événements de vérification

Chaque tentative de vérification est suivie par une série d'états d'événements. Ceux-ci apparaissent dans votre tableau de bord analytique et dans les réponses de l'API :

| Statut | Signification |
|---|---|
| PAGE_VIEW | Le membre a chargé la page de vérification
| Le membre a cliqué sur le bouton "Vérifier"
| Le membre a cliqué sur le bouton "Vérifier"
| CAPTCHA_PASSED | Le membre a résolu le captcha
| OAUTH_REDIRECT | Le membre a été redirigé vers Discord OAuth2 |
| Le membre a été redirigé vers Discord OAuth2
| BLOCKED | Bloqué par un contrôle de sécurité (le champ blockReason contient des détails)
| FAILED | La vérification a échoué en raison d'une erreur (échec de l'échange de jeton, erreur d'API, etc.)
Vérification — Restore Hub Docs | Restore Hub