Signatur
Beschreibung
radius_put_string ist Teil der PECL-Erweiterung radius und dient dazu, einem zuvor erstellten RADIUS-Request (z. B. Authentication- oder Accounting-Request) ein Attribut mit einem String-Wert hinzuzufügen. Typische String-Attribute sind z. B. RADIUS_USER_NAME oder RADIUS_USER_PASSWORD.
Bevor diese Funktion aufgerufen werden kann, muss ein RADIUS-Handle mit radius_auth_open() oder radius_acct_open() erstellt und mit radius_create_request() ein neuer Request angelegt worden sein. Die Attribute werden schrittweise mit den verschiedenen radius_put_*-Funktionen zusammengestellt, bevor der Request mit radius_send_request() abgeschickt wird.
Für andere Datentypen existieren verwandte Funktionen: radius_put_int für Integer-Attribute und radius_put_addr für IP-Adressen. Die richtige Wahl der Funktion richtet sich nach dem Datentyp, den das jeweilige RADIUS-Attribut gemäß RFC 2865 oder der herstellerspezifischen Dictionary-Definition erwartet.
Hinweis: Diese Funktion gehört zur PECL-Erweiterung radius, die separat installiert werden muss und in modernen PHP-Projekten oft durch andere RADIUS-Bibliotheken ersetzt wird.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $radius_handle Pflicht | resource | Ein gültiges RADIUS-Handle, das zuvor mit radius_auth_open() oder radius_acct_open() erzeugt wurde. |
|
| $type Pflicht | int | Der Attributtyp als Integer-Konstante, z. B. RADIUS_USER_NAME (1) oder RADIUS_USER_PASSWORD (2). Die verfügbaren Konstanten sind in der radius-Erweiterung definiert. |
|
| $value Pflicht | string | Der String-Wert des Attributs, der in den RADIUS-Request eingefügt werden soll, z. B. der Benutzername oder das Passwort. |
Rückgabewert
true zurück, wenn das Attribut erfolgreich hinzugefügt wurde, oder false im Fehlerfall. Im Fehlerfall kann die Fehlermeldung mit radius_strerror() abgerufen werden.Beispiele
Einfacher RADIUS-Authentifizierungsrequest mit Benutzername und Passwort
<?php
// RADIUS-Handle öffnen
$radius = radius_auth_open();
// Server konfigurieren: Hostname, Shared Secret, Timeout, Versuche
if (!radius_add_server($radius, 'radius.example.com', 1812, 'shared_secret', 5, 3)) {
die('Server konnte nicht hinzugefügt werden: ' . radius_strerror($radius));
}
// Neuen Authentication-Request erstellen
if (!radius_create_request($radius, RADIUS_ACCESS_REQUEST)) {
die('Request konnte nicht erstellt werden: ' . radius_strerror($radius));
}
// Benutzername als String-Attribut setzen
if (!radius_put_string($radius, RADIUS_USER_NAME, 'maxmustermann')) {
die('Benutzername konnte nicht gesetzt werden: ' . radius_strerror($radius));
}
// Passwort als String-Attribut setzen
if (!radius_put_string($radius, RADIUS_USER_PASSWORD, 'geheimesPasswort')) {
die('Passwort konnte nicht gesetzt werden: ' . radius_strerror($radius));
}
// Request senden und Antwort auswerten
$result = radius_send_request($radius);
if ($result === RADIUS_ACCESS_ACCEPT) {
echo 'Authentifizierung erfolgreich!';
} elseif ($result === RADIUS_ACCESS_REJECT) {
echo 'Authentifizierung abgelehnt.';
} else {
echo 'Fehler: ' . radius_strerror($radius);
}
radius_close($radius);
?>
Vendor-spezifisches String-Attribut mit radius_put_vendor_string
<?php
// Für vendor-spezifische String-Attribute existiert radius_put_vendor_string
// Hier exemplarisch der Vergleich zum Aufruf von radius_put_string
$radius = radius_auth_open();
radius_add_server($radius, 'radius.example.com', 1812, 'shared_secret', 5, 3);
radius_create_request($radius, RADIUS_ACCESS_REQUEST);
// Standard-String-Attribut: NAS-Identifier (Attribut-Typ 32)
if (radius_put_string($radius, RADIUS_NAS_IDENTIFIER, 'mein-nas-01')) {
echo 'NAS-Identifier erfolgreich gesetzt.';
} else {
echo 'Fehler: ' . radius_strerror($radius);
}
radius_close($radius);
?>
// Wichtig · Fallstricke
Sicherheitshinweis: Das Passwort (Attribut RADIUS_USER_PASSWORD) wird von der RADIUS-Bibliothek gemäß RFC 2865 mit dem Shared Secret verschlüsselt, bevor es übertragen wird. Das Shared Secret sollte dennoch stets lang, zufällig und geheim gehalten werden, da die Sicherheit des Passworts direkt von dessen Stärke abhängt.
Die Funktion gehört zur PECL-Erweiterung radius (pecl install radius). Diese Erweiterung wird seit einigen Jahren kaum noch aktiv gepflegt; für neue Projekte sollten Alternativen wie dapphp/radius in Betracht gezogen werden.
Es ist wichtig, die korrekte radius_put_*-Variante zu wählen: String-Attribute mit radius_put_string, Integer-Attribute mit radius_put_int und IP-Adressen mit radius_put_addr. Falsche Typen führen zu Protokollfehlern oder abgelehnten Requests.