Dies ist eine alte Version des Dokuments!
In diesem Beispiel wird vorausgesetzt, dass der vom User eingegebene Token aus einem HTML-Eingabeformular via Post an diese Seite gesendet wurde.
include( 'oauth2/rfc6238.php'); $base32Key = 'JV4VGZLDOJSXIUDBONZXO33SMQ'; $rangeIn30s = 2; if( TokenAuth6238::verify( $base32Key, $_POST['token'], $rangeIn30s ) ) { echo "Code is valid"; } else { echo "Invalid code"; }
Wird, wie in diesem Fall, für die Authentifizierung der Type „totp“ verwendet werden die Token der Grundlage des Keys und der aktuellen Uhrzeit generiert.
Aufgrund einer möglichen Zeitabweichung zwischen dem Client und dem Validierungsserver besteht die Möglichkeit beim Aufruf der Methode verify der PHP-Klasse PHPOTP (PHP One Time Password), als 3. Parameter eine Karenz-Zeit einzustellen. Standardmäßig, wenn der Parameter nicht gesetzt wird, werden 7 Token abgeglichen (3 in der Vergangenheit, der aktuelle und 3 in der Zukunft). Beispiel:
Token | Zeit-Differenz |
---|---|
643829 | aktuelle Zeit - 90 Sekunden |
390536 | aktuelle Zeit - 60 Sekunden |
436341 | aktuelle Zeit - 30 Sekunden |
887919 | aktuelle Zeit |
774486 | aktuelle Zeit + 30 Sekunden |
380981 | aktuelle Zeit + 60 Sekunden |
473181 | aktuelle Zeit + 90 Sekunden |
Somit ist ein Token für 3 Minuten gültig (1,5 Minuten vor der Zeit und 1,5 Minuten nach der Zeit). Mit dieser Taktik können Zeitdifferenzen zwischen Smartphone und Server bis zu 3 Minuten kompensiert werden.