Start · Sprachen · PHP · Referenz · ZookeeperAuthenticationException

ZookeeperAuthenticationException

Klasse

Wird geworfen, wenn bei der Verbindung zu einem ZooKeeper-Server ein Authentifizierungsfehler auftritt.

seit PHP 0.2.0 Kategorie: error

Signatur

class ZookeeperAuthenticationException extends ZookeeperException

Beschreibung

ZookeeperAuthenticationException ist eine spezialisierte Ausnahmeklasse, die von der ZooKeeper-PHP-Erweiterung ausgelöst wird, wenn die Authentifizierung gegenüber einem ZooKeeper-Server fehlschlägt. Sie erweitert ZookeeperException und signalisiert damit spezifisch sicherheitsrelevante Verbindungsprobleme.

Typische Ursachen für diese Ausnahme sind falsche oder fehlende Zugangsdaten (z. B. ein ungültiges Passwort oder ein nicht vorhandener Benutzer), ein abgelaufenes Authentifizierungsschema oder eine fehlende Berechtigung für die gewählte Auth-Methode (z. B. digest, kerberos).

Da ZooKeeper-Knoten mit ACLs (Access Control Lists) gesichert werden können, ist es wichtig, diese Ausnahme von anderen Verbindungsfehlern (ZookeeperConnectionException) zu unterscheiden. So kann der Code gezielt auf Authentifizierungsprobleme reagieren, etwa durch Erneuerung von Zugangsdaten oder durch ein aussagekräftiges Fehler-Logging.

  • Klasse befindet sich in der PECL-Erweiterung php-zookeeper.
  • Erbt alle Methoden von Exception wie getMessage(), getCode() und getTrace().

Beispiele

Authentifizierungsfehler beim ZooKeeper-Verbindungsaufbau abfangen

<?php
try {
    $zk = new Zookeeper('zookeeper.example.com:2181');
    // Falsche Zugangsdaten setzen
    $zk->addAuth('digest', 'invaliduser:wrongpassword');

    // Versuch, einen gesicherten Knoten zu lesen
    $data = $zk->get('/secured/node');
    echo 'Daten: ' . $data;
} catch (ZookeeperAuthenticationException $e) {
    // Gezielt auf Authentifizierungsprobleme reagieren
    error_log('ZooKeeper-Authentifizierungsfehler: ' . $e->getMessage());
    echo 'Zugriff verweigert: Ungültige Zugangsdaten. (Code: ' . $e->getCode() . ')';
} catch (ZookeeperException $e) {
    // Alle anderen ZooKeeper-Fehler
    error_log('ZooKeeper-Fehler: ' . $e->getMessage());
    echo 'Ein ZooKeeper-Fehler ist aufgetreten.';
}
Zugriff verweigert: Ungültige Zugangsdaten. (Code: -115)

Unterschiedliche ZooKeeper-Ausnahmen hierarchisch behandeln

<?php
function verbindeZooKeeper(string $host, string $schema, string $credentials): ?Zookeeper {
    try {
        $zk = new Zookeeper($host);
        $zk->addAuth($schema, $credentials);
        return $zk;
    } catch (ZookeeperAuthenticationException $e) {
        // Nur bei Auth-Fehler: Zugangsdaten erneuern oder Admin benachrichtigen
        echo 'Authentifizierung fehlgeschlagen – bitte Zugangsdaten prüfen: '
            . $e->getMessage() . PHP_EOL;
        return null;
    } catch (ZookeeperConnectionException $e) {
        echo 'Verbindungsfehler: ' . $e->getMessage() . PHP_EOL;
        return null;
    } catch (ZookeeperException $e) {
        echo 'Allgemeiner ZooKeeper-Fehler: ' . $e->getMessage() . PHP_EOL;
        return null;
    }
}

$zk = verbindeZooKeeper('zookeeper.example.com:2181', 'digest', 'admin:geheim');
if ($zk !== null) {
    echo 'Erfolgreich verbunden.' . PHP_EOL;
}
Authentifizierung fehlgeschlagen – bitte Zugangsdaten prüfen: Authentication is not valid

// Wichtig · Fallstricke

Sicherheitshinweis: Zugangsdaten für ZooKeeper sollten niemals im Klartext in Log-Dateien oder Fehlermeldungen erscheinen. Fangen Sie ZookeeperAuthenticationException stets ab und geben Sie in Produktionsumgebungen nur generische Fehlermeldungen an den Endnutzer aus.

Die Fehlercodes der ZooKeeper-Erweiterung entsprechen den nativen ZooKeeper-C-Client-Codes. Der typische Code für einen Authentifizierungsfehler ist -115 (ZAUTHFAILED). Prüfen Sie getCode(), falls eine differenzierte Behandlung einzelner Fehlerzustände nötig ist.

Die Klasse erfordert die PECL-Erweiterung php-zookeeper (mindestens Version 0.2.0) sowie eine laufende ZooKeeper-Instanz.