Watch-IP

Comparer la localisation d'une connexion avec la localisation précédemment enregistrée

Un changement important de localisation déduite de l'IP sur un court intervalle peut justifier une revue. POST /v1/risk/check compare l'estimation actuelle de la localisation d'un utilisateur avec le point précédemment enregistré et renvoie une distance, un temps écoulé, une vitesse implicite et une classification de risque — contactez-nous pour confirmer la disponibilité avant toute intégration, car l'application indépendante d'un forfait de risque et la disponibilité du paiement n'ont pas été vérifiées.

Disponibilité

Ce point de terminaison partage le même middleware de clé secrète que la recherche d'IP, qui vérifie simplement qu'une clé est bien une clé secrète — il n'applique pas indépendamment une famille de forfaits de risque distincte, et la tarification de risque préconfigurée n'a aucun prix actif défini. Confirmez avec nous les conditions et la disponibilité actuelles avant de vous y fier en production.

Entrée et usage de la clé secrète

Envoyez un corps JSON contenant userId, ip et un booléen commit optionnel (true par défaut) à POST /v1/risk/check avec une clé secrète via Authorization: Bearer YOUR_SECRET_KEY — exclusivement serveur à serveur, jamais depuis un navigateur.

La première observation

La toute première vérification d'un utilisateur n'a aucune localisation précédente à comparer : elle renvoie risk: "low", impossibleTravel: false, des valeurs de distance/vitesse/temps écoulé à null, et un previousLocation à null, puis — si commit n'est pas à false — enregistre cette observation comme nouvelle référence.

Observations suivantes

Les vérifications suivantes comparent la distance orthodromique entre le point précédent et le point actuel au temps écoulé pour obtenir une vitesse implicite. En dessous de 500 km/h, le résultat est "low" ; entre 500 et 900 km/h, "medium" (un vol long-courrier réel peut se situer près de cette limite) ; au-dessus de 900 km/h, "high" et impossibleTravel: true.

L'indicateur commit

commit vaut true par défaut. Mettez-le à false pour une pré-vérification exploratoire — par exemple en amont d'une décision d'authentification renforcée — qui lit la référence stockée sans la modifier, afin qu'une vérification légitime ne corrompe pas l'historique réel de localisation de l'utilisateur.

Localisations manquantes

Si ip ne peut pas être résolue en latitude/longitude, le point de terminaison renvoie une erreur 422 plutôt qu'une estimation peu fiable.

Conservation et suppression

La v1 stocke exactement une localisation par paire (votre compte, userId) — la dernière observation validée — sans expiration automatique et sans point de terminaison de suppression disponible actuellement ; elle persiste jusqu'à ce que la prochaine vérification validée l'écrase. Parce qu'elle stocke une localisation liée à un userId au-delà d'un simple cycle requête/réponse, l'utilisation de ce point de terminaison fait de Watch-IP un sous-traitant de ces données pour votre compte — voir l'avenant de traitement des données (DPA).

Faux positifs

La v1 ne dispose d'aucune suppression tenant compte des VPN ou des centres de données, si bien qu'un basculement rapide de VPN ou un renouvellement ordinaire d'IP sur réseau mobile peut produire un résultat élevé. Considérez chaque classification comme un signal brut pour votre propre processus de revue, pas comme un verdict final.

Champs de la réponse

risk
low, medium ou high, d'après les seuils de vitesse implicite ci-dessus.
impossibleTravel
Raccourci booléen pour risk: "high".
distanceKm, impliedSpeedKmh, elapsedSeconds
La distance et le temps entre l'observation précédente et l'observation actuelle, ainsi que la vitesse qui en découle. À null lors de la toute première vérification d'un utilisateur.
previousLocation
country, latitude, longitude et observedAt pour la référence stockée avant cet appel. À null lors de la toute première vérification d'un utilisateur.
currentLocation
country, latitude et longitude déterminés à partir de l'ip que vous avez fournie lors de cet appel.

Pré-vérifier, puis valider

cURL backend

# Vérification exploratoire en amont de votre propre décision d'authentification — ne modifie pas la référence.
curl https://api.watch-ip.com/v1/risk/check \
  -H "Authorization: Bearer YOUR_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"userId": "u_123", "ip": "203.0.113.1", "commit": false}'

# Une fois votre propre vérification mot de passe/2FA réussie, validez la nouvelle référence.
curl https://api.watch-ip.com/v1/risk/check \
  -H "Authorization: Bearer YOUR_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"userId": "u_123", "ip": "203.0.113.1"}'

commit vaut true par défaut : le second appel ci-dessus met donc à jour la référence stockée ; le premier, avec commit: false, ne le fait pas.

Questions fréquentes

Que se passe-t-il lors de la première vérification ?

Elle renvoie toujours risk: "low" avec un previousLocation à null — il n'y a encore rien à comparer avec la localisation actuelle.

Supprime-t-elle les sauts de VPN ?

Non. La v1 ne dispose d'aucune suppression tenant compte des VPN ou des centres de données : changer de réseau ou de sortie VPN entre deux connexions peut à lui seul produire un résultat medium ou high.

Un résultat high prouve-t-il une compromission ?

Non. C'est un simple calcul brut de distance sur le temps. Combinez-le avec vos propres preuves d'authentification plutôt que de le traiter comme un verdict autonome.

Puis-je éviter de mettre à jour la référence ?

Oui — transmettez commit: false. La vérification s'exécute toujours et renvoie un résultat, mais la localisation stockée n'est pas remplacée.

Combien de temps la localisation précédente est-elle conservée ?

Indéfiniment, jusqu'à ce que la prochaine vérification validée pour ce userId l'écrase — il n'existe aucune expiration automatique ni point de terminaison de suppression dans l'implémentation actuelle.

Pages associées