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'; if( TokenAuth6238::verify( $base32Key, $_POST['token'] ) ) { 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.
Die PHP-Klasse PHPOTP (PHP One Time Password) erstellt bei der Validierung des vom User eingegebenen Token sieben Tokens zum Vergleich. 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.