ホームページ  >  記事  >  バックエンド開発  >  Golang で認証に HTTP を使用するにはどうすればよいですか?

Golang で認証に HTTP を使用するにはどうすればよいですか?

WBOY
WBOYオリジナル
2024-06-03 09:09:57711ブラウズ

Go では、認証方法には次のものが含まれます: 基本認証: ユーザー名とパスワードを使用します。確認コードは記事に示されています。 Bearer Token Authentication: トークンを資格情報として使用します。検証コードは記事に示されています。 OAuth 2.0 認証: 認証プロトコル、検証コードは記事に示されています。実践例: すべてのルートで基本認証を有効にするコードが記事に記載されています。

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

Go での認証に HTTP を使用する

Go で認証に HTTP を使用することは、アプリケーションを保護し、ユーザーを認証するために重要です。ここでは、実用的な例を含む、Go のいくつかの一般的な認証方法のガイドを示します。

ベーシック認証

ベーシック認証は、認証にユーザー名とパスワードを使用する最も単純な認証方法です。

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

ベアラー トークン認証

ベアラー トークン認証では、トークンを資格情報として使用します。

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 認証

OAuth 2.0 は、ユーザーがサードパーティのアプリケーションに自分のデータへのアクセスを承認できるようにする、広く使用されている承認プロトコルです。

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

実践例

HTTP ルーターがあり、すべてのルートに対して基本認証を有効にしたいとします。

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

これで、誰かがルート ルート (http://localhost:8080/) にアクセスしようとするたびに、ユーザー名とパスワードの入力が求められます。 401 Unauthorized 応答を受け取ります。

以上がGolang で認証に HTTP を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。