Rokad
Toute la documentation
Documentation dhal

Limitation et identité

Construisez les clés de limitation avec IP, route, utilisateur, tenant et clé API.

Voir le dépôt
Documentation dhal
Page 5 sur 9

Dhal peut limiter par IP, route, utilisateur, tenant ou clé API. Cela évite de dépendre uniquement de l’IP dans les API authentifiées et les systèmes multi-tenant.

json
{
  "rateLimit": {
    "enabled": true,
    "store": "memory",
    "keyBy": ["ip", "route"],
    "default": { "windowSeconds": 60, "max": 120 },
    "routes": {
      "/api/search": { "windowSeconds": 60, "max": 30 }
    }
  }
}

Composants disponibles : ip, route, userId, tenantId et apiKeyId. Le credential stuffing accepte aussi userAgent.

CasClé conseillée
Endpoint publicip, route
Action authentifiéeuserId, route
Quota tenanttenantId, route
Intégration APIapiKeyId, route
Connexionip, route, éventuellement userAgent

En-têtes d’identité

json
{
  "identity": {
    "headers": {
      "userId": ["x-dhal-user-id", "x-user-id"],
      "tenantId": ["x-dhal-tenant-id", "x-tenant-id"],
      "apiKeyId": ["x-dhal-api-key-id", "x-api-key-id"]
    }
  }
}

Ne faites confiance qu’aux en-têtes supprimés puis réécrits par votre couche d’authentification ou votre passerelle. N’acceptez pas directement les identités fournies par le client.

Profil de route

json
{
  "routes": {
    "/api/export": {
      "mode": "block",
      "rateLimit": {
        "enabled": true,
        "windowSeconds": 3600,
        "max": 10,
        "keyBy": ["tenantId", "userId"]
      }
    }
  }
}

Le stockage mémoire convient au développement, aux tests et à un processus unique. En production horizontale, utilisez RedisRateLimitStore ou une implémentation partagée atomique avec expiration.