Signatur
Beschreibung
radius_request_authenticator() ist Teil der PECL-Erweiterung radius und liefert den 16-Byte-Request-Authenticator des zuletzt über den angegebenen RADIUS-Handle gesendeten Pakets. Der Request-Authenticator ist ein zufälliger Wert, der vom RADIUS-Client erzeugt und in jedes Access-Request- sowie Accounting-Request-Paket eingebettet wird.
Der Wert wird vom RADIUS-Server zur Überprüfung der Integrität von Antwortpaketen verwendet: Er dient als Basis für den MD5-basierten Response-Authenticator, mit dem der Client prüft, ob eine Antwort tatsächlich vom erwarteten Server stammt.
Typischerweise wird diese Funktion für Debugging-Zwecke oder für manuelle Implementierungen von RADIUS-Protokoll-Prüfungen genutzt, z. B. wenn man die Server-Antwort eigenständig validieren möchte. Der zurückgegebene Wert ist ein roher Binär-String mit einer Länge von 16 Byte.
Zu beachten ist, dass die Funktion nur sinnvoll aufgerufen werden kann, nachdem ein RADIUS-Request gesendet wurde (z. B. mit radius_send_request()), da andernfalls kein Authenticator verfügbar ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $radius_handle Pflicht | resource | Eine gültige RADIUS-Ressource, die zuvor mit radius_auth_open() oder radius_acct_open() erstellt wurde. |
Rückgabewert
false zurückgegeben.Beispiele
Request-Authenticator nach RADIUS-Authentifizierungsanfrage auslesen
<?php
$radius = radius_auth_open();
if (!$radius) {
die('RADIUS-Handle konnte nicht erstellt werden.');
}
radius_add_server($radius, '192.168.1.10', 1812, 'geheimesPasswort', 3, 3);
radius_create_request($radius, RADIUS_ACCESS_REQUEST);
radius_put_attr($radius, RADIUS_USER_NAME, 'testuser');
radius_put_attr($radius, RADIUS_USER_PASSWORD, 'testpassword');
$result = radius_send_request($radius);
// Request-Authenticator auslesen
$authenticator = radius_request_authenticator($radius);
if ($authenticator !== false) {
// Binärdaten als Hex-String ausgeben
echo 'Request-Authenticator (hex): ' . bin2hex($authenticator) . PHP_EOL;
echo 'Länge: ' . strlen($authenticator) . ' Bytes' . PHP_EOL;
} else {
echo 'Fehler: Kein Authenticator verfügbar.' . PHP_EOL;
}
radius_close($radius);
?>
Manuelle Validierung einer RADIUS-Antwort mit dem Request-Authenticator
<?php
// Beispiel: Response-Authenticator manuell prüfen
// Der Response-Authenticator = MD5(Code+ID+Length+RequestAuth+Attributes+Secret)
$radius = radius_auth_open();
radius_add_server($radius, '192.168.1.10', 1812, 'geheimesPasswort', 3, 3);
radius_create_request($radius, RADIUS_ACCESS_REQUEST);
radius_put_attr($radius, RADIUS_USER_NAME, 'testuser');
radius_put_attr($radius, RADIUS_USER_PASSWORD, 'testpassword');
$resultCode = radius_send_request($radius);
$requestAuth = radius_request_authenticator($radius);
$responseAuth = radius_response_authenticator($radius);
if ($requestAuth !== false && $responseAuth !== false) {
echo 'Request-Auth (hex): ' . bin2hex($requestAuth) . PHP_EOL;
echo 'Response-Auth (hex): ' . bin2hex($responseAuth) . PHP_EOL;
// Weitergehende Validierung hier möglich...
} else {
echo 'Authentikator nicht verfügbar.' . PHP_EOL;
}
radius_close($radius);
?>
// Wichtig · Fallstricke
Sicherheitshinweis: Der Request-Authenticator sollte niemals vorhersehbar oder wiederverwendet werden, da er die Grundlage für die Absicherung des RADIUS-Protokolls bildet. Die PECL-radius-Erweiterung generiert diesen Wert automatisch als kryptografisch zufälligen 16-Byte-Wert.
Verfügbarkeit: Diese Funktion ist Teil der PECL-Erweiterung radius und ist nicht in der Standard-PHP-Distribution enthalten. Sie muss separat installiert werden (pecl install radius).
Reihenfolge: Die Funktion liefert nur dann einen sinnvollen Wert, wenn zuvor ein Request mit radius_send_request() tatsächlich abgeschickt wurde. Ein Aufruf vor dem Senden gibt false zurück.