Benutzer-Werkzeuge

Webseiten-Werkzeuge


php:otpauth_qr_code

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 QRCode in Ihr Projekt um den QR-Code zu erzeugen
  • Integration von 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
image URL zu einem Bild (z. B. https://picsum.photos/100)

Weitere Infos unter https://github.com/google/google-authenticator/wiki/Key-Uri-Format

php/otpauth_qr_code.txt · Zuletzt geändert: 2025/01/31 12:28 von webproducer