Rokad
Gesamte Dokumentation
dhal-Dokumentation

Rate Limiting und Identität

Erstellen Sie Limit-Schlüssel aus IP, Route, Benutzer, Tenant und API-Schlüssel.

Repository ansehen
dhal-Dokumentation
Seite 5 von 9

Dhal kann nach IP, Route, Benutzer, Tenant oder API-Schlüssel limitieren. Das ist für authentifizierte APIs und Multi-Tenant-Systeme zuverlässiger als reine IP-Limits.

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

Verfügbare Komponenten: ip, route, userId, tenantId und apiKeyId. Credential Stuffing unterstützt zusätzlich userAgent.

AnwendungsfallEmpfohlener Schlüssel
Öffentlicher Endpointip, route
Authentifizierte AktionuserId, route
Tenant-QuotatenantId, route
API-IntegrationapiKeyId, route
Loginip, route, optional userAgent

Identitäts-Header

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"]
    }
  }
}

Vertrauen Sie nur Headern, die von Authentifizierung oder Gateway entfernt und neu gesetzt werden. Akzeptieren Sie keine unveränderten öffentlichen Client-Identitäten.

Routenprofil

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

Der Memory Store eignet sich für Entwicklung, Tests und einen einzelnen Prozess. Für horizontale Produktion verwenden Sie RedisRateLimitStore oder einen atomaren gemeinsamen Store mit Ablaufzeiten.