Dieses Beispiel erstellt einen QR-Code für das Hinzufügen eines Kontos im Google Authenticator. Voraussetzungen:
Der „key“ sollte eindeutig sein und keine Bestandteile der anderen Login-Daten (Benutzername und Passwort) oder des Users (Name, Vorname, Geburtsdatum, etc.) beinhalten. Der „key“ muss dauerhaft (z. B. in einer mySQL-Datenbank) gespeichert werden, damit der vom User eingegebene Token später wieder validiert werden kann.
include( 'oauth2/base32static.php'); include( 'phpqrcode/qrlib.php' ); function getSecret( $key ) { $secret = Base32Static::encode( $key ); return str_replace( "=", "", $secret ); } function createQR( $secret, $account, $issuer ) { $text = "otpauth://totp/" . urlencode( $account ); $text .= "?secret=" . urlencode( $secret ); $text .= "&issuer=" . urlencode( $issuer ); QRcode::png( $text, false, QR_ECLEVEL_M ); } createQR( getSecret( 'MySecretPassword'), "account@domain.de", "Name of Website" );
Schematischer Aufbau der URL
otpauth://TYPE/LABEL?PARAMETERS
TYPE
totp | offener Standard mit Berücksichtigung der aktuellen Uhrzeit |
hotp | Anstatt Uhrzeit wird hier ein Zähler verwendet |
LABEL
Benutzername des Kontos (z. B. account@domain.de)
PARAMETERS
secret | In base32 codierter key |
issuer | Aussteller (z. B. Name der Firma) |
counter | Beim TYP „hotp“ ist die Angabe des Zählers notwendig |
Weitere Infos unter https://github.com/google/google-authenticator/wiki/Key-Uri-Format