====== Erstellung eines QR-Codes für 2FA ======
Dieses Beispiel erstellt einen QR-Code für das Hinzufügen eines Kontos im Google Authenticator. Voraussetzungen:
* Integration der PHP-Klasse [[php:qr_code|QRCode]] in Ihr Projekt um den QR-Code zu erzeugen
* Integration von [[https://github.com/Voronenko/PHPOTP|PHPOTP]] in Ihr Projekt, um einen Base32-Code zu errechnen.
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" );
===== Erläuterung der Parameter =====
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