


So implementieren Sie die Zwei-Faktor-Authentifizierung (2FA) in einer Golang-App
Oct 16, 2025 am 11:18 AMGenerieren Sie mithilfe der pquerna/otp-Bibliothek einen eindeutigen geheimen TOTP-Schlüssel pro Benutzer und speichern Sie ihn sicher. 2. Erstellen Sie aus dem Schlüssel-URI einen QR-Code, den Benutzer mit Authentifizierungs-Apps wie Google Authenticator scannen k?nnen. 3. Fragen Sie w?hrend der Anmeldung nach der Passwortüberprüfung nach dem 6-stelligen TOTP-Code und validieren Sie ihn mit totp.Validate(). 4. Behalten Sie den 2FA-Status im Benutzermodell bei, einschlie?lich geheimer Speicherung, aktiviertem Status und optionalen Wiederherstellungscodes für die Sicherung des Kontozugriffs.
Um die Zwei-Faktor-Authentifizierung (2FA) in einer Go-Anwendung (Golang) zu implementieren, verwenden Sie normalerweise zeitbasierte Einmalkennw?rter (TOTP) gem?? dem RFC 6238-Standard. Diese Methode l?sst sich gut in Authentifizierungs-Apps wie Google Authenticator, Authy oder Microsoft Authenticator integrieren. Nachfolgend finden Sie eine klare Anleitung zum Einrichten von 2FA in Ihrem Go-Backend.
1. Generieren Sie einen geheimen TOTP-Schlüssel
Jeder Benutzer ben?tigt einen einzigartigen geheimen Schlüssel für 2FA. Dieser Schlüssel wird zur Generierung und Verifizierung von Einmalcodes verwendet.
Sie k?nnen die pquerna/otp -Bibliothek verwenden, die TOTP und HOTP unterstützt. Installieren Sie es über:
Holen Sie sich github.com/pquerna/otp. Holen Sie sich github.com/pquerna/otp/totpGenerieren Sie ein Geheimnis:
importiere ?github.com/pquerna/otp/totp“Schlüssel, Fehler := totp.Generate(totp.GenerateOpts{
Aussteller: ?Ihr-App-Name“,
Kontoname: ?user@example.com“,
})
if err != nil {
// Fehler behandeln
}
Secret := key.Secret() // Speichern Sie dies in Ihrer Datenbank
2. Zeigen Sie den QR-Code für die Einrichtung an
Benutzer müssen einen QR-Code mit ihrer Authentifizierungs-App scannen. Der QR-Code enth?lt einen aus dem TOTP-Schlüssel generierten URI.
Dieselbe Bibliothek bietet eine M?glichkeit, die QR-Code-URL abzurufen:
qrCode, err := totp.Generate(totp.GenerateOpts{Aussteller: ?Ihr-App-Name“,
Kontoname: ?user@example.com“,
})
if err != nil {
// Fehler behandeln
}
// Verwenden Sie qrCode.URL(), um ein QR-Code-Bild zu generieren
// Sie k?nnen zum Rendern eine QR-Code-Bibliothek wie ?github.com/skip2/go-qrcode“ verwenden
Zeigen Sie in Ihrem Frontend (oder Ihrer E-Mail) den QR-Code mit der URL an, damit der Benutzer ihn scannen kann.
3. überprüfen Sie den 2FA-Code
Wenn sich der Benutzer anmeldet, fordert er ihn nach der Eingabe seines Passworts zur Eingabe des 6-stelligen Codes aus seiner App auf.
überprüfen Sie es mit:
valid := totp.Validate(userInput, Secret)wenn gültig {
// 2FA erfolgreich
} anders {
// ungültiger Code
}
Die Validierungsfunktion prüft anhand des aktuellen Zeitfensters (Standard 30 Sekunden). Durch Anpassen der Optionen ist bei Bedarf eine gewisse Abweichung der Uhr m?glich.
4. Speichern und verwalten Sie den 2FA-Status
Speichern Sie in Ihrem Benutzermodell Folgendes:
- 2FA-Geheimnis (im Ruhezustand verschlüsselt)
- Ob 2FA aktiviert ist
- Wiederherstellungscodes (optional, aber empfohlen)
W?hrend des Anmeldevorgangs:
- Benutzername/Passwort authentifizieren
- Wenn 2FA aktiviert ist, ist ein TOTP-Code erforderlich
- Rufen Sie totp.Validate() auf
- Erlauben Sie den Zugriff nur, wenn beide Schritte erfolgreich sind
Erw?gen Sie die Zulassung von Wiederherstellungscodes für den Fall, dass Benutzer ihr Ger?t verlieren.
Im Grunde ist das die Art und Weise, wie man einer Go-App sicheres 2FA hinzufügt. Verwenden Sie TOTP, generieren Sie ein Geheimnis pro Benutzer, zeigen Sie einen QR-Code an und validieren Sie Eingabecodes bei der Anmeldung. Bewahren Sie Geheimnisse sicher auf und bieten Sie Wiederherstellungsoptionen an.
Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Zwei-Faktor-Authentifizierung (2FA) in einer Golang-App. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Stock Market GPT
KI-gestützte Anlageforschung für intelligentere Entscheidungen

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Struct {} ist eine feldlose Struktur in GO, die Null -Bytes einnimmt und h?ufig in Szenarien verwendet wird, in denen Daten nicht erforderlich sind. Es wird als Signal im Kanal verwendet, wie z. B. Goroutine -Synchronisation; 2. als Sammlung von Werttypen von Karten, um wichtige Existenzüberprüfungen im effizienten Speicher zu durchführen; 3.. Definierbare Empf?nger der staatenlosen Methoden, geeignet für Abh?ngigkeitsinjektion oder Organisationsfunktionen. Dieser Typ wird h?ufig verwendet, um den Kontrollfluss und klare Absichten auszudrücken.

GoprovidessimpleandefficienpatriemingTheosandbufiPackages.toreadasmallFileEntirely, UseOS.Readfile, WHOLOADSTheContentintomemorySafelyAntomatomaticManateManateFileoperationen

MiddleWareIntowebserversArfunctionsThatIntercepthttpRequestSeBeforeTheachTheHandler, erm?glicht ReusableCross-CuttingFunctionality;

Glearshutdownsingoapplicationsareessentialforrelability, erreicht von der IntencingossignalSLikeIGintandSigterTheos/SignalpackagetoinitiatShutdownProcedures und dann untermauert und dann schaltettpServers -gracracywithttp.servers sshutdown () methodoaLaChactiverequest

Cgoenablesgotocallccode, die Integration withclibraries Likeopensl, AccessTolow-Level-Systems, und Performanceoptimisierung;

Implementiert die JSON-Serialisierung und Deserialisierung von anpassbaren GO-Strukturen für Marshaljson und Unmarshaljson, geeignet für den Umgang mit nicht standardm??igen Formaten oder kompatibel mit alten Daten. 2. steuern Sie die Ausgangsstruktur durch Marschhalson, wie z. B. die Konvertierung von Feldformaten; A. 4. Achten Sie darauf, dass unendliche Schleifen durch rekursive Anrufe verursacht werden, und verwenden Sie den Typ -Alias, um benutzerdefinierte Methoden zu umgehen.

TheFlagpackageingoparsScommand-lineargumentsbydefiningFlagslikestring, int, OrBoolusedflag.stringvar, Flag.intvar usw., Suchasflag.Stringvar (& host, "host", "localhost", "serveraddress"); Afterdeclackingflags, Callflag.Parse (Callflag.Parse (Callflag.Parse ()

Das Coding/CSV -Paket von GO kann die CSV -Datei -Lese- und Schreibvorg?nge problemlos verarbeiten. 1. Beim Lesen von CSV -Dateien ?ffnen Sie OS.open, um die Datei zu ?ffnen und mit CSV.Newreader zu analysieren. Sie k?nnen es gleichzeitig über ReadAll () oder Line für Zeile lesen, um den Speicher zu speichern. 2. Wenn Sie CSV -Dateien schreiben, verwenden Sie OS.Create, um die Datei zu erstellen und Daten mit CSV.NewWriter zu schreiben. Sie müssen Flush () anrufen, um das Schreiben von Daten zu gew?hrleisten, oder WriteAll () zum Schreiben von Stapeln verwenden. 3. Bei der Verarbeitung strukturierter Daten mit Titeln k?nnen Sie die Datens?tze manuell auf Struktur abbilden, z. B. das überspringen der ersten Titel- und Parsingfelder oder eine Bibliothek von Drittanbietern, um eine automatische Bindung zu erreichen. 4.
