BJSecureID

Documentation d'intégration

Introduction

BJSecureID est une plateforme de détection et prévention de fraude identitaire. Elle identifie chaque visiteur par son empreinte numérique (fingerprint), calcule un score de confiance, et permet aux plateformes partenaires de sécuriser leurs services.

UUID

Identifiant unique par visiteur

0-100

Trust Score calculé automatiquement

18+

Composants fingerprint collectés

Modes du SDK

Le SDK fonctionne en deux modes selon votre besoin :

PASSIF

Le SDK collecte l'empreinte et identifie le visiteur silencieusement. Aucune interaction avec votre backend. Idéal pour la détection et protection sans modification de votre infrastructure.

  • - Collecte fingerprint automatique
  • - Identification visiteur (UUID)
  • - Trust Score disponible en callback
  • - Aucun webhook requis
ACTIF

Le SDK interagit activement avec votre plateforme via webhooks, partage de profils et synchronisation. Idéal pour l'authentification croisée et le mode SSO.

  • - Tout le mode passif +
  • - Webhooks temps réel
  • - Partage de profils sécurisé (HMAC)
  • - Mode SSO inter-plateformes
  • - Push de données identitaires

1. Intégration rapide

Ajoutez le SDK dans votre page HTML avec votre clé publique :

<script src="https://bjsecureid.com/sdk/bjsecure.js"></script>
<script>
  BJSecure.init({
    publicKey: 'pk_VOTRE_CLE_PUBLIQUE',
    endpoint: 'https://bjsecureid.com/api/v1',
    mode: 'passive', // ou 'active'
    debug: false,
    onReady: function(data) {
      console.log('Visiteur:', data.visitor_uuid);
      console.log('Score:', data.trust_score);
    },
    onError: function(err) {
      console.error('Erreur:', err);
    }
  });
</script>

Important : Le SDK ne fonctionnera que sur les domaines autorisés pour votre plateforme. Si vous l'utilisez sur un domaine non enregistré, la requête sera rejetée (403).

2. Options de configuration

Option Type Défaut Description
publicKeystringrequisClé publique de votre plateforme (pk_...)
endpointstring/api/v1URL de base de l'API
modestringpassive'passive' ou 'active'
autoCollectbooltrueCollecte automatique au chargement
debugboolfalseLogs dans la console navigateur
onReadyfunction-Callback après identification réussie
onErrorfunction-Callback en cas d'erreur

3. API REST

Tous les endpoints requièrent le header X-API-Key (clé privée, côté serveur uniquement).

POST /api/v1/fingerprint

Envoie un fingerprint pour identification (utilisé par le SDK).

Response: { "success": true, "data": { "visitor_uuid", "trust_score", "is_new" } }
GET /api/v1/visitor/{uuid}

Récupère les informations complètes d'un visiteur.

POST /api/v1/events analytics

Reçoit un lot d'événements visiteurs (pages vues, clics, scroll, formulaires, événements custom). Géré automatiquement par le SDK.

Body: { "visitor_uuid": "...", "session_id": "...", "events": [ { "type": "pageview", "url": "..." } ] }
POST /api/v1/profile mode actif

Pousse des données de profil (nom, email, NPI, etc.).

Body: { "visitor_uuid": "...", "first_name": "...", "email": "...", "npi": "..." }
POST /api/v1/profile/{uuid}/secure mode actif

Envoie sécurisé des données via webhook HMAC-SHA256.

Analytics & suivi d'événements SDK v1.2+

À partir de la v1.2, le SDK journalise automatiquement l'activité du visiteur (pages vues, clics, défilement, soumissions de formulaire, fin de session) et l'envoie par lots à /api/v1/events. Aucune configuration n'est requise : le suivi est actif par défaut.

Événements custom

// Journaliser une action métier
BJSecure.track('inscription_terminee', { plan: 'premium', montant: 15000 });

Capture de formulaires & profil visiteur

Le SDK détecte les champs d'identité remplis (nom, prénom, email, téléphone, NPI) pour construire le profil du visiteur. Garde-fous appliqués automatiquement : les mots de passe, codes OTP et données de paiement ne sont jamais capturés (exclusion côté SDK et serveur).

  • • Forcer la capture d'un champ : data-bjs-capture="ville"
  • • Exclure un champ : data-bjs-ignore
  • • Désactiver toute la capture : captureFields: false

Options de tracking

OptionDéfautDescription
autoTracktrueSuivi automatique des événements
trackClickstrueSuivi des clics sur liens/boutons
trackScrolltrueProfondeur de défilement (25/50/75/100%)
trackFormstrueSuivi des soumissions de formulaire
captureFieldstrueDétection des champs d'identité (profil)

⚖️ Conformité : la capture de champs de formulaire doit être déclarée dans la politique de confidentialité de votre plateforme et faire l'objet du consentement de l'utilisateur (RGPD / loi béninoise sur la protection des données).

4. Pousser des profils (mode actif)

BJSecure.pushProfile({
  first_name: 'Koffi',
  last_name: 'Agossou',
  email: 'koffi@example.com',
  npi: 'NPI-123456789',
  id_card_type: 'CNI',
  id_card_number: 'AB1234567',
  authenticated: true,
  custom_data: { role: 'client' }
}).then(res => console.log('OK', res));

5. Webhooks (mode actif)

Chaque webhook est signé avec HMAC-SHA256 pour garantir l'authenticité.

Headers envoyés :

X-BJSecure-Signature: hmac_sha256(payload, webhook_secret)
X-BJSecure-Event: visitor.profile.request
X-BJSecure-Timestamp: 1234567890
X-BJSecure-Platform: platform_uuid

Vérification côté serveur (PHP) :

$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_BJSECURE_SIGNATURE'];
$expected = hash_hmac('sha256', $payload, $webhookSecret);

if (hash_equals($expected, $signature)) {
    $data = json_decode($payload, true);
    // Traiter les données...
}

6. Trust Score

Le Trust Score (0-100) est calculé automatiquement :

Bonus (+)

  • - Profils authentifiés (+10 / plateforme)
  • - Ancienneté du visiteur (+2 / mois)
  • - Données NPI, email, CNI complètes
  • - Données biométriques fournies

Malus (-)

  • - Alertes ouvertes (-10 par alerte)
  • - Alertes critiques (-15 supplémentaire)
  • - Trop de fingerprints (>10 : -2 par FP)
  • - Blocages actifs (-20 par blocage)
  • - Brute force détecté (-15)

7. Sécurité et domaines

Restriction par domaine : Chaque plateforme enregistre ses domaines autorisés. Le SDK et l'API rejettent toute requête provenant d'un domaine non autorisé.

Clé publique vs privée : La clé publique (pk_...) est utilisée côté client dans le SDK. La clé privée (X-API-Key) est utilisée côté serveur uniquement — ne jamais l'exposer.

Chiffrement : Les secrets API et webhook sont chiffrés en base de données (AES-256).

Rate limiting : L'API est limitée à 60 requêtes/minute par clé API.

Blocage : Une plateforme ou une entité entière peut être bloquée par l'administrateur BJSecureID à tout moment.

9. Entités et plateformes

Chaque utilisateur de BJSecureID est rattaché à une entité (organisation, entreprise, gouvernement, etc.).

Une entité peut posséder plusieurs plateformes, chacune avec ses propres clés API, domaines autorisés et mode SDK.

Processus d'inscription :

  1. Créer un compte entité avec les informations légales
  2. Attendre la validation par l'équipe BJSecureID
  3. Ajouter une ou plusieurs plateformes
  4. Enregistrer les domaines autorisés
  5. Récupérer les clés publique/privée
  6. Intégrer le SDK sur vos pages

Types d'entités supportés :

Gouvernemental ONG Entreprise Particulier SA SARL Association