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

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

php/otpauth_qr_code.txt · Zuletzt geändert: 2017/10/15 00:00 (Externe Bearbeitung)