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"