Heim >Backend-Entwicklung >Golang >Wie verwende ich HTTP zur Authentifizierung in Golang?

Wie verwende ich HTTP zur Authentifizierung in Golang?

WBOY
WBOYOriginal
2024-06-03 09:09:57729Durchsuche

Zu den Authentifizierungsmethoden in Go gehören: Basisauthentifizierung: Verwenden Sie Benutzernamen und Passwort, der Bestätigungscode wird im Artikel angezeigt. Inhabertoken-Authentifizierung: Verwenden Sie ein Token als Anmeldeinformation. Der Bestätigungscode wird im Artikel angezeigt. OAuth 2.0-Authentifizierung: Ein Autorisierungsprotokoll, der Bestätigungscode wird im Artikel gezeigt. Praxisbeispiel: Der Code zum Aktivieren der Basisauthentifizierung für alle Routen finden Sie im Artikel.

在 Golang 中如何使用 HTTP 进行身份验证?

HTTP für die Authentifizierung in Go verwenden

Die Verwendung von HTTP für die Authentifizierung in Go ist entscheidend für die Sicherheit Ihrer Anwendung und die Authentifizierung von Benutzern. Hier finden Sie eine Anleitung zu mehreren gängigen Authentifizierungsmethoden in Go, einschließlich praktischer Beispiele.

Basisauthentifizierung

Die Basisauthentifizierung ist die einfachste Authentifizierungsmethode, bei der Benutzername und Passwort zur Authentifizierung verwendet werden.

func BasicAuth(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        username, password, ok := r.BasicAuth()
        if !ok || username != "user" || password != "password" {
            http.Error(w, "Unauthorized", http.StatusUnauthorized)
            return
        }

        next.ServeHTTP(w, r)
    })
}

Bearer-Token-Authentifizierung

Bearer-Token-Authentifizierung verwendet Token als Anmeldeinformationen.

func BearerAuth(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        token := r.Header.Get("Authorization")
        if token != "Bearer my-token" {
            http.Error(w, "Unauthorized", http.StatusUnauthorized)
            return
        }

        next.ServeHTTP(w, r)
    })
}

OAuth 2.0-Authentifizierung

OAuth 2.0 ist ein weit verbreitetes Autorisierungsprotokoll, das es Benutzern ermöglicht, Anwendungen von Drittanbietern den Zugriff auf ihre Daten zu autorisieren.

func OAuth2Auth(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        token := r.URL.Query().Get("access_token")
        if token != "my-access-token" {
            http.Error(w, "Unauthorized", http.StatusUnauthorized)
            return
        }

        next.ServeHTTP(w, r)
    })
}

Praktisches Beispiel

Angenommen, Sie haben einen HTTP-Router und möchten die Standardauthentifizierung für alle Routen aktivieren:

import (
    "log"
    "net/http"

    "github.com/gorilla/mux"
)

func main() {
    router := mux.NewRouter()
    router.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("Hello, authenticated user!"))
    })

    // Use BasicAuth middleware to protect all routes
    loggedRouter := BasicAuth(router)

    log.Fatal(http.ListenAndServe(":8080", loggedRouter))
}

Wenn jetzt jemand versucht, auf die Root-Route (http://localhost:8080/) zuzugreifen, wird er andernfalls nach seinem Benutzernamen und Passwort gefragt Sie erhalten eine 401 Unauthorized-Antwort.

Das obige ist der detaillierte Inhalt vonWie verwende ich HTTP zur Authentifizierung in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn