API Sécurité
L’API Sécurité fournit des outils pour protéger le tenant contre les accès non autorisés et les activités malveillantes. Les administrateurs peuvent gérer les listes d’IP autorisées/bloquées, examiner les événements de connexion suspects, configurer la vérification CAPTCHA et gérer les verrouillages de comptes.
Auris évalue les règles de sécurité pendant chaque tentative d’authentification dans cet ordre : règles IP (blocage/permission) → vérification CAPTCHA → rate limiting → validation des credentials → analyse des connexions suspectes → MFA adaptatif. Chaque niveau opère indépendamment et peut être configuré séparément.
Règles IP
Les règles IP définissent des listes d’autorisation et de blocage en utilisant la notation CIDR. Les règles de blocage ont toujours la priorité sur les règles d’autorisation. Les règles peuvent être limitées à l’ensemble du tenant ou à une application spécifique.
Lister les Règles IP
/api/ip-rulesRequires: manage:usersListe toutes les règles IP allow/block configurées pour le tenant. Supporte le filtrage par type de règle, scope et statut actif. Les règles sont triées par date de création décroissante.
Paramètres de query
| Paramètre | Type | Description |
|---|---|---|
type | string | Filtre par type de règle : ALLOW ou BLOCK |
scope | string | Filtre par scope : TENANT ou APPLICATION |
isActive | boolean | Filtre par statut actif |
page | integer | Numéro de page (défaut : 1) |
limit | integer | Éléments par page (défaut : 20, max : 100) |
Réponse de succès
{
"ok": true,
"data": {
"data": [
{
"id": "ipr_abc123",
"cidr": "203.0.113.0/24",
"type": "BLOCK",
"scope": "TENANT",
"applicationId": null,
"label": "Plage d'attaquant connu",
"note": "Bloqué après campagne brute-force le 2025-02-10",
"isTemporary": true,
"expiresAt": "2025-03-10T00:00:00Z",
"isActive": true,
"createdAt": "2025-02-10T14:30:00Z"
},
{
"id": "ipr_def456",
"cidr": "10.0.0.0/8",
"type": "ALLOW",
"scope": "TENANT",
"applicationId": null,
"label": "VPN d'entreprise",
"note": "Plage réseau interne",
"isTemporary": false,
"expiresAt": null,
"isActive": true,
"createdAt": "2025-01-15T09:00:00Z"
}
],
"pagination": { "page": 1, "limit": 20, "total": 3, "totalPages": 1 }
}
}Créer une Règle IP
/api/ip-rulesRequires: manage:usersCrée une nouvelle règle IP allow ou block. La notation CIDR est obligatoire — utilise /32
pour une adresse IP unique. Les règles de blocage ont toujours la priorité sur les règles
d’autorisation lors de l’évaluation.
Corps de la requête
{
"cidr": "192.0.2.0/24",
"type": "BLOCK",
"scope": "TENANT",
"label": "Plage datacenter",
"note": "Bloqué en raison d'activité de scraping automatisé",
"isTemporary": true,
"expiresAt": "2025-04-01T00:00:00Z"
}| Champ | Type | Obligatoire | Description |
|---|---|---|---|
cidr | string | Oui | Adresse IP ou plage en notation CIDR (ex. 10.0.0.1/32, 192.168.0.0/16) |
type | string | Oui | ALLOW ou BLOCK |
scope | string | Oui | TENANT (s’applique à toutes les apps) ou APPLICATION (nécessite applicationId) |
applicationId | string | Non | Obligatoire quand le scope est APPLICATION |
label | string | Non | Étiquette lisible pour la règle |
note | string | Non | Note administrative ou raison |
isTemporary | boolean | Non | Si la règle expire automatiquement (défaut : false) |
expiresAt | string | Non | Date d’expiration ISO 8601. Obligatoire quand isTemporary est true |
Codes d’erreur
| Code | HTTP | Description |
|---|---|---|
VALIDATION_ERROR | 400 | Notation CIDR invalide, champs obligatoires manquants, ou combinaison scope/type invalide |
DUPLICATE_RULE | 409 | Une règle avec le même CIDR et scope existe déjà |
Les règles temporaires sont automatiquement supprimées après le timestamp expiresAt. Il n’est pas nécessaire de les supprimer manuellement.
Mettre à Jour une Règle IP
/api/ip-rules/[id]Requires: manage:usersMet à jour une règle IP existante. Tous les champs sont optionnels — seuls les champs fournis sont mis à jour. La modification du CIDR ou du type d’une règle prend effet immédiatement.
Supprimer une Règle IP
/api/ip-rules/[id]Requires: manage:usersSupprime définitivement une règle IP. La règle est retirée immédiatement.
Événements de Connexion Suspecte
Auris surveille les tentatives de connexion pour détecter des comportements anormaux en utilisant cinq méthodes de détection : nouvel appareil, nouvelle adresse IP, nouveau pays, voyage impossible et utilisation VPN/proxy. Quand une activité suspecte est détectée, un événement est enregistré et l’action configurée est exécutée (log uniquement, MFA requis, ou blocage).
Lister les Événements de Connexion Suspecte
/api/suspicious-login/eventsRequires: manage:usersListe les événements de connexion suspecte dans le tenant. Les événements sont triés par date
de création décroissante. Utilise le filtre reviewed pour trouver les événements nécessitant
attention.
Paramètres de query
| Paramètre | Type | Description |
|---|---|---|
userId | string | Filtre les événements pour un utilisateur spécifique |
severity | string | Filtre par gravité : low, medium, high, critical |
reason | string | Filtre par raison : new_device, new_ip, new_country, impossible_travel, vpn_detected |
reviewed | boolean | true pour les événements révisés, false pour les non révisés |
page | integer | Numéro de page (défaut : 1) |
limit | integer | Éléments par page (défaut : 20, max : 100) |
Réponse de succès
{
"ok": true,
"data": {
"data": [
{
"id": "sle_abc123",
"userId": "usr_xyz789",
"userEmail": "[email protected]",
"reason": "impossible_travel",
"severity": "high",
"actionTaken": "require_mfa",
"details": {
"previousLocation": { "country": "France", "city": "Paris" },
"currentLocation": { "country": "Brazil", "city": "Sao Paulo" },
"distanceKm": 9000,
"timeDiffMinutes": 45,
"requiredSpeedKmh": 12000
},
"ipAddress": "198.51.100.42",
"reviewed": false,
"createdAt": "2025-02-18T09:15:00Z"
}
],
"pagination": { "page": 1, "limit": 20, "total": 47, "totalPages": 3 }
}
}Marquer un Événement comme Révisé
/api/suspicious-login/events/[id]/reviewRequires: manage:usersMarque un événement de connexion suspecte comme révisé. Il s’agit d’un accusé de réception administratif et n’affecte pas l’accès de l’utilisateur.
Codes d’erreur
| Code | HTTP | Description |
|---|---|---|
NOT_FOUND | 404 | L’événement n’existe pas |
ALREADY_REVIEWED | 400 | L’événement a déjà été marqué comme révisé |
Récupérer la Configuration de Détection
/api/suspicious-login/configRequires: manage:usersRécupère la configuration actuelle de détection des connexions suspectes pour le tenant.
Réponse de succès
{
"ok": true,
"data": {
"detectNewDevice": true,
"detectNewIp": true,
"detectNewCountry": true,
"detectImpossibleTravel": true,
"detectVpn": false,
"actionOnNewDevice": "log",
"actionOnNewIp": "log",
"actionOnNewCountry": "require_mfa",
"actionOnImpossibleTravel": "require_mfa",
"actionOnVpn": "log",
"maxTravelSpeedKmh": 900,
"geoIpProvider": "ip-api",
"updatedAt": "2025-02-01T12:00:00Z"
}
}| Champ | Type | Description |
|---|---|---|
detectNewDevice | boolean | Signale les connexions depuis des appareils jamais vus auparavant |
detectNewIp | boolean | Signale les connexions depuis des adresses IP jamais vues auparavant |
detectNewCountry | boolean | Signale les connexions depuis un nouveau pays |
detectImpossibleTravel | boolean | Signale quand des connexions consécutives sont géographiquement impossibles compte tenu du temps écoulé |
detectVpn | boolean | Signale les connexions depuis des IP VPN/proxy/datacenter connus |
actionOn* | string | Action à effectuer : log (enregistrement uniquement), require_mfa (force 2FA), block (refus d’accès) |
maxTravelSpeedKmh | integer | Seuil de vitesse pour la détection du voyage impossible (défaut : 900 km/h) |
Mettre à Jour la Configuration de Détection
/api/suspicious-login/configRequires: manage:usersMet à jour la configuration de détection des connexions suspectes. Tous les champs sont optionnels. Les modifications prennent effet immédiatement sur les tentatives de connexion suivantes.
Définir actionOnImpossibleTravel ou actionOnNewCountry sur block peut bloquer des utilisateurs légitimes qui voyagent fréquemment ou utilisent des réseaux mobiles. Envisage d’utiliser require_mfa à la place, ce qui ajoute une étape de vérification sans refuser complètement l’accès.
CAPTCHA
La vérification CAPTCHA ajoute un défi humain aux flux d’authentification. Auris supporte trois fournisseurs : Cloudflare Turnstile, hCaptcha et reCAPTCHA v3. Le CAPTCHA peut être activé à chaque tentative, uniquement après une activité suspecte, ou après un nombre configurable de tentatives de connexion échouées.
Récupérer la Configuration CAPTCHA
/api/captcha/configRequires: manage:usersRécupère la configuration CAPTCHA actuelle pour le tenant.
Réponse de succès
{
"ok": true,
"data": {
"provider": "CLOUDFLARE_TURNSTILE",
"trigger": "ON_SUSPICIOUS",
"siteKey": "0x4AAAAAAA...",
"scoreThreshold": 0.5,
"enableOnLogin": true,
"enableOnRegister": true,
"enableOnReset": false,
"updatedAt": "2025-02-15T10:00:00Z"
}
}La secretKey n’est jamais retournée dans les réponses API. Elle peut uniquement être définie via l’endpoint de mise à jour.
Mettre à Jour la Configuration CAPTCHA
/api/captcha/configRequires: manage:usersMet à jour la configuration CAPTCHA. Tous les champs sont optionnels. Définis provider
sur null pour désactiver complètement le CAPTCHA.
Corps de la requête
{
"provider": "CLOUDFLARE_TURNSTILE",
"trigger": "AFTER_FAILURES",
"siteKey": "0x4AAAAAAA_your_site_key",
"secretKey": "0x4AAAAAAA_your_secret_key",
"scoreThreshold": 0.5,
"enableOnLogin": true,
"enableOnRegister": true,
"enableOnReset": true
}| Champ | Type | Description |
|---|---|---|
provider | string | CLOUDFLARE_TURNSTILE, HCAPTCHA, RECAPTCHA_V3, ou null pour désactiver |
trigger | string | ALWAYS, ON_SUSPICIOUS, AFTER_FAILURES |
siteKey | string | Clé publique du fournisseur CAPTCHA |
secretKey | string | Clé secrète du fournisseur CAPTCHA (écriture seule, jamais retournée) |
scoreThreshold | number | Seuil de score pour reCAPTCHA v3 (0.0 - 1.0, défaut : 0.5) |
enableOnLogin | boolean | Active le CAPTCHA sur la page de connexion |
enableOnRegister | boolean | Active le CAPTCHA sur la page d’inscription |
enableOnReset | boolean | Active le CAPTCHA sur la page de réinitialisation du mot de passe |
Verrouillages de Compte
Quand un utilisateur dépasse le lockoutThreshold configuré dans les paramètres de sécurité, son compte est temporairement verrouillé. Les administrateurs peuvent visualiser les comptes verrouillés et les déverrouiller manuellement.
Lister les Comptes Verrouillés
/api/admin/lockoutsRequires: manage:usersListe tous les comptes utilisateur actuellement verrouillés. Seuls les comptes avec des verrouillages actifs sont retournés. Les verrouillages expirés naturellement ne sont pas inclus.
Réponse de succès
{
"ok": true,
"data": {
"data": [
{
"id": "lock_abc123",
"userId": "usr_xyz789",
"userEmail": "[email protected]",
"userName": "Alice Martin",
"failedAttempts": 5,
"lockedAt": "2025-02-18T09:00:00Z",
"expiresAt": "2025-02-18T09:15:00Z",
"ipAddress": "203.0.113.50"
}
],
"pagination": { "page": 1, "limit": 20, "total": 2, "totalPages": 1 }
}
}Déverrouiller un Compte
/api/admin/lockouts/[userId]Requires: manage:usersDéverrouille immédiatement un compte utilisateur. Le compteur des tentatives échouées est remis à zéro. L’utilisateur peut tenter de se connecter à nouveau immédiatement après le déverrouillage.
Réponse de succès
{
"ok": true,
"data": {
"unlocked": true,
"userId": "usr_xyz789"
}
}Codes d’erreur
| Code | HTTP | Description |
|---|---|---|
NOT_FOUND | 404 | L’utilisateur n’est pas actuellement verrouillé |
Les verrouillages de compte expirent automatiquement en fonction de la lockoutDuration configurée dans les paramètres de sécurité. Le déverrouillage manuel n’est nécessaire que lorsqu’un utilisateur légitime est verrouillé et ne peut pas attendre l’expiration du verrouillage.
Ordre d’Évaluation de la Sécurité
Pendant chaque tentative d’authentification, Auris évalue les niveaux de sécurité dans cet ordre :
- Règles IP — Si l’IP du client correspond à une règle BLOCK, la requête est rejetée avec
403 IP_BLOCKED. - CAPTCHA — Si le CAPTCHA est configuré et que la condition de déclenchement est satisfaite, le client doit fournir un token CAPTCHA valide.
- Rate Limiting — Vérification des limites de fréquence à fenêtre glissante (configurables par tier).
- Validation des Credentials — Vérification email/mot de passe ou autres credentials.
- Brute Force / Verrouillage — Le compteur des tentatives échouées est incrémenté. Si le seuil est atteint, le compte est verrouillé.
- Analyse des Connexions Suspectes — Analyse post-authentification de l’appareil, l’IP, la géographie et les patterns de voyage.
- MFA Adaptatif — L’évaluation du risque peut nécessiter une authentification step-up si le score de risque dépasse les seuils.
Chaque niveau est indépendant et peut être désactivé sans affecter les autres.
Référence des Permissions
| Permission | Description |
|---|---|
manage:users | Gère les règles IP, révise les événements de connexion suspecte, configure CAPTCHA et déverrouille les comptes |
Pages Associées
- MFA Adaptatif et Risk Scoring — Comment l’évaluation du risque guide les décisions de sécurité
- Protection contre les Attaques — Configurer la protection brute-force et les connexions suspectes
- Configuration Protection des Menaces — Règles IP, CAPTCHA et détection de bots
- Paramètres de Sécurité (Console) — Gère toutes les fonctionnalités de sécurité depuis la Console