Signatur
Beschreibung
radius_auth_open() initialisiert eine neue RADIUS-Verbindungsressource für Authentifizierungszwecke (Access-Request). Diese Ressource ist der Ausgangspunkt für alle weiteren RADIUS-Operationen wie das Hinzufügen von Servern, das Setzen von Attributen und das tatsächliche Versenden von Authentifizierungsanfragen.
Das zurückgegebene Handle wird bei anderen RADIUS-Funktionen als erster Parameter übergeben, etwa bei radius_add_server(), radius_put_attr() und radius_send_request(). Es kapselt den internen Zustand der Verbindung und ermöglicht es, mehrere unabhängige RADIUS-Handles gleichzeitig zu verwalten.
Diese Funktion ist Teil der PECL-Erweiterung radius und muss entsprechend installiert und aktiviert sein. Sie eignet sich besonders für Szenarien, in denen eine Anwendung Benutzeranmeldeinformationen über das RADIUS-Protokoll gegen einen zentralen Authentifizierungsserver prüfen möchte — beispielsweise in Netzwerkzugangs-Portalen (Captive Portals) oder VPN-Backends.
Nach der Verwendung sollte das Handle mit radius_close() freigegeben werden, um Ressourcen korrekt zu bereinigen.
Rückgabewert
false zurückgegeben.Beispiele
Einfache RADIUS-Authentifizierungsanfrage
<?php
// RADIUS-Handle für Authentifizierung öffnen
$radius = radius_auth_open();
if ($radius === false) {
die('RADIUS-Handle konnte nicht erstellt werden.');
}
// RADIUS-Server hinzufügen (Host, Secret, Port, Timeout, Wiederholungen)
if (!radius_add_server($radius, '192.168.1.10', 1812, 'geheimes_shared_secret', 3, 3)) {
die('Server konnte nicht hinzugefügt werden: ' . radius_strerror($radius));
}
// Neue Anfrage vom Typ Access-Request erstellen
if (!radius_create_request($radius, RADIUS_ACCESS_REQUEST)) {
die('Anfrage konnte nicht erstellt werden: ' . radius_strerror($radius));
}
// Attribute setzen: Benutzername und Passwort
radius_put_attr($radius, RADIUS_USER_NAME, 'max.mustermann');
radius_put_attr($radius, RADIUS_USER_PASSWORD, 'geheimesPasswort');
// Anfrage senden und Ergebnis auswerten
$ergebnis = radius_send_request($radius);
switch ($ergebnis) {
case RADIUS_ACCESS_ACCEPT:
echo 'Authentifizierung erfolgreich!' . PHP_EOL;
break;
case RADIUS_ACCESS_REJECT:
echo 'Authentifizierung abgelehnt.' . PHP_EOL;
break;
default:
echo 'Fehler: ' . radius_strerror($radius) . PHP_EOL;
}
// Handle freigeben
radius_close($radius);
Fehlerbehandlung beim Öffnen des Handles
<?php
// RADIUS-Handle öffnen mit expliziter Fehlerprüfung
$radius = radius_auth_open();
if ($radius === false) {
// Fehler protokollieren und Vorgang abbrechen
error_log('RADIUS: Konnte kein Authentifizierungs-Handle erstellen.');
http_response_code(503);
echo 'Authentifizierungsdienst momentan nicht verfügbar.';
exit;
}
echo 'RADIUS-Handle erfolgreich erstellt, Typ: ' . gettype($radius) . PHP_EOL;
// Bereinigung
radius_close($radius);
// Wichtig · Fallstricke
Sicherheitshinweis: Das Shared Secret zwischen PHP-Anwendung und RADIUS-Server sollte ausreichend lang und zufällig sein und niemals im Klartext in öffentlich zugänglichen Konfigurationsdateien gespeichert werden. Verwende Umgebungsvariablen oder geschützte Konfigurationsdateien.
PECL-Abhängigkeit: radius_auth_open() ist Teil der PECL-Erweiterung radius und steht nicht standardmäßig in PHP zur Verfügung. Die Erweiterung muss separat installiert werden (pecl install radius).
Unterschied zu radius_acct_open(): Während radius_auth_open() ein Handle für Authentifizierungsanfragen (Access-Request, Port 1812) erstellt, ist radius_acct_open() für Accounting-Anfragen (Port 1813) gedacht. Beide Handles sind nicht austauschbar.