Maison  >  Article  >  développement back-end  >  Comment utiliser HTTP pour l'authentification dans Golang ?

Comment utiliser HTTP pour l'authentification dans Golang ?

WBOY
WBOYoriginal
2024-06-03 09:09:57657parcourir

Dans Go, les méthodes d'authentification incluent : Authentification de base : utilisez le nom d'utilisateur et le mot de passe, le code de vérification est affiché dans l'article. Authentification par jeton du porteur : utilisez le jeton comme identifiant, le code de vérification est affiché dans l'article. Authentification OAuth 2.0 : Un protocole d'autorisation, le code de vérification est indiqué dans l'article. Exemple pratique : le code permettant d'activer l'authentification de base pour toutes les routes est fourni dans l'article.

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

Utiliser HTTP pour l'authentification dans Go

L'utilisation de HTTP pour l'authentification dans Go est cruciale pour sécuriser votre application et authentifier vos utilisateurs. Voici un guide de plusieurs méthodes d'authentification courantes dans Go, y compris des exemples pratiques.

Authentification de base

L'authentification de base est la méthode d'authentification la plus simple, utilisant un nom d'utilisateur et un mot de passe pour l'authentification.

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)
    })
}

Authentification par jeton du porteur

L'authentification par jeton du porteur utilise des jetons comme informations d'identification.

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)
    })
}

Authentification OAuth 2.0

OAuth 2.0 est un protocole d'autorisation largement utilisé qui permet aux utilisateurs d'autoriser des applications tierces à accéder à leurs données.

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)
    })
}

Exemple pratique

Supposons que vous ayez un routeur HTTP et que vous souhaitiez activer l'authentification de base pour toutes les routes :

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))
}

Maintenant, chaque fois que quelqu'un essaie d'accéder à la route racine (http://localhost:8080/), il lui sera demandé son nom d'utilisateur et son mot de passe, sinon Ils recevront une réponse 401 non autorisée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn