Nœuds — Risque adaptatif
Signaux contextuels (appareil, géolocalisation, score composite) pour de l’authentification adaptative, dans le cadre d’un graphe d’authentification.
DeviceFingerprintNode — compare l’empreinte de l’appareil (en-tête X-Device-Fingerprint ou shared state) aux appareils déjà connus de l’utilisateur.
| Propriété | Type | Défaut |
|---|---|---|
autoRegister | boolean | false |
Outcomes : recognized / new / unknown.
GeoLocationDecisionNode — décide selon la géolocalisation IP, avec une option de détection de vélocité (déplacements rapprochés dans le temps).
| Propriété | Type | Défaut |
|---|---|---|
allowedCountries | string | "" |
blockedCountries | string | "" |
geoApiEndpoint | string | endpoint par défaut du service de géolocalisation |
blockUnknownGeo | boolean | false |
velocityCheckEnabled | boolean | false |
velocityWindowMinutes | int | 60 |
Outcomes : allowed / blocked / suspicious.
ImpossibleTravelNode — calcule la distance (formule de Haversine) entre deux localisations successives et la compare à une vitesse maximale plausible.
| Propriété | Type | Défaut |
|---|---|---|
maxSpeedKmh | int | 900 |
minTimeDifferenceMinutes | int | 5 |
Outcomes : true / false (true = déplacement physiquement impossible détecté).
RiskScoreNode — score composite (0–100) basé sur six signaux : horaires inhabituels, user-agent suspect, appareil inconnu, tentatives excessives, IP inconnue, géolocalisation inconnue.
| Propriété | Type | Défaut |
|---|---|---|
lowThreshold | int | 30 |
highThreshold | int | 70 |
offHoursWeight | int | 20 |
suspiciousUserAgentWeight | int | 25 |
unknownDeviceWeight | int | 15 |
attemptsThreshold | int | 3 |
excessiveAttemptsWeight | int | 30 |
unknownIpWeight | int | 10 |
unknownGeoWeight | int | 10 |
Outcomes : low / medium / high.