Einmalpasswörter (OTPs) sind ein Mechanismus zur Verbesserung der Sicherheit gegenüber Passwörtern allein. Wenn ein zeitbasiertes OTP (TOTP) auf dem Telefon eines Benutzers gespeichert und mit etwas kombiniert wird, das der Benutzer kennt (Passwort), haben Sie einen einfachen Einstieg zur Multi-Faktor-Authentifizierung, ohne eine Abhängigkeit von einem SMS-Anbieter hinzuzufügen. Diese Kombination aus Passwort und TOTP wird von vielen beliebten Websites verwendet, darunter Google, GitHub, Facebook, Salesforce und vielen anderen.
Mit der otp
-Bibliothek können Sie ganz einfach TOTPs zu Ihrer eigenen Anwendung hinzufügen und so die Sicherheit Ihrer Benutzer vor Massenverstößen gegen Passwörter und Malware erhöhen.
Da TOTP standardisiert und weit verbreitet ist, gibt es viele mobile Clients und Softwareimplementierungen.
otp
unterstützt:Als Beispiel für einen funktionierenden Registrierungs-Workflow hat GitHub seinen dokumentiert, aber die Grundlagen sind:
key,_ := totp.Generate(...)
.key.Secret()
und key.Image(...)
.totp.Validate(...)
.key.Secret()
GenerateCode
-Funktion und einen Zähler oder eine time.Time
Struktur, um einen gültigen Code zu generieren, der mit den meisten Implementierungen kompatibel ist.GenerateCodeCustom
in beiden Modulen.totp.Validate(...)
Wenn ein Benutzer den Zugriff auf sein TOTP-Gerät verliert, hat er keinen Zugriff mehr auf sein Konto. Da TOTPs häufig auf mobilen Geräten konfiguriert werden, die verloren gehen, gestohlen oder beschädigt werden können, ist dies ein häufiges Problem. Aus diesem Grund vergeben viele Anbieter ihren Nutzern „Backup-Codes“ oder „Recovery-Codes“. Hierbei handelt es sich um eine Reihe von Einmalcodes, die anstelle des TOTP verwendet werden können. Dies können einfach zufällig generierte Zeichenfolgen sein, die Sie in Ihrem Backend speichern. Die Dokumentation von Github bietet einen Überblick über die Benutzererfahrung.
Bitte öffnen Sie Issues in Github für Ideen, Fehler und allgemeine Gedanken. Pull-Requests werden natürlich bevorzugt :)
otp
ist unter der Apache-Lizenz, Version 2.0, lizenziert