Obtenir les paramètres de protection contre les attaques

GET /v1/attack-protection · permission attack-protection:read

Renvoie l'objet de protection contre les attaques de l'environnement : force brute, limitation des IP suspectes, bourrage d'identifiants, protection contre les bots, mot de passe compromis, protection à l'inscription, protection SMS et politique de risque. Chaque section a deux vues : configured est ce que vous avez écrit, effective est la valeur en vigueur, avec les valeurs par défaut, le plancher de sécurité et votre plan appliqués. Une section que vous n'avez jamais écrite a configured: {}. L'en-tête de réponse ETag identifie le contenu de l'objet ; envoyez-le comme If-Match sur PUT et PATCH.

Requête

Cette opération ne prend ni champ de chemin, ni de requête, ni de corps. L'environnement provient de l'identifiant.

Réponse

200 OK avec l'objet et l'en-tête ETag.

{
  "schema_version": 1,
  "brute_force": {
    "configured": {"max_failures": 10},
    "effective": {"mode": "enforce", "max_failures": 10, "window_minutes": 15, "lock_minutes": 15, "notify_user": true}
  },
  "risk_policy": {
    "configured": {"mode": "enforce"},
    "effective": {"mode": "log", "challenge_threshold": 4, "block_threshold": null, "notify_user_on_new_device": true}
  },
  "bot_protection": {
    "configured": {},
    "effective": {"mode": "risk_based", "provider": "altcha"}
  }
}

L'exemple est raccourci : chaque réponse contient les huit sections (brute_force, suspicious_ip_throttling, credential_stuffing, bot_protection, breached_password, signup_protection, sms_protection, risk_policy). Dans l'exemple, le plan n'inclut plus l'application du risque : le enforce configuré est conservé mais s'affiche comme log.

Champs

Champ Type Plage ou valeurs Valeur par défaut Plancher
brute_force.mode texte log, enforce enforce
brute_force.max_failures entier 5-100 20 au plus 100
brute_force.window_minutes entier 5-60 15
brute_force.lock_minutes entier 5-60 15 au moins 5
brute_force.notify_user booléen true
suspicious_ip_throttling.mode texte log, enforce enforce
suspicious_ip_throttling.login_failures_per_ip_per_day entier 10-10000 100
suspicious_ip_throttling.signups_per_ip_per_hour entier 1-20 20 au plus 20
suspicious_ip_throttling.allowlist tableau de texte jusqu'à 100 préfixes CIDR ; IPv4 pas plus large que /8, IPv6 pas plus large que /32 []
credential_stuffing.mode texte log, enforce enforce
credential_stuffing.attack_mode_auto booléen true
credential_stuffing.attack_mode_duration_minutes entier 15-240 30
bot_protection.mode texte off, risk_based, always risk_based
bot_protection.provider texte altcha altcha
breached_password.on_signup texte block block block
breached_password.on_password_change texte block block block
breached_password.on_login texte require_reset, notify require_reset
breached_password.notify_user booléen true
signup_protection.block_disposable_email booléen true
signup_protection.block_email_subaddress booléen false
signup_protection.max_signups_per_device_30d entier 1-50 3
sms_protection.allowed_countries tableau de texte jusqu'à 250 codes ISO 3166-1 alpha-2 [] (valeur du plan)
sms_protection.daily_cap entier | null 1-1000000 ; null est la valeur du plan null
sms_protection.conversion_breaker booléen true true
risk_policy.mode texte log, enforce (enforce requiert le plan Startup ou supérieur) log
risk_policy.challenge_threshold entier 3-8 4
risk_policy.block_threshold entier | null 6-12, supérieur à challenge_threshold ; null désactive null
risk_policy.notify_user_on_new_device booléen true

Erreurs

HTTP code Quand
401 unauthenticated L'identifiant est absent, invalide ou révoqué.
403 insufficient_permissions L'identifiant n'a pas la permission requise.
429 rate_limited La limite de débit est dépassée ; réessayez après la durée Retry-After.
503 service_unavailable Une dépendance est temporairement indisponible ; réessayez après la durée Retry-After.

Exemple

curl https://api.eu.keenauth.com/v1/attack-protection \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"