>  기사  >  백엔드 개발  >  Golang에서 인증을 위해 HTTP를 사용하는 방법은 무엇입니까?

Golang에서 인증을 위해 HTTP를 사용하는 방법은 무엇입니까?

WBOY
WBOY원래의
2024-06-03 09:09:57693검색

Go에서 인증 방법은 다음과 같습니다. 기본 인증: 사용자 이름과 비밀번호를 사용합니다. 확인 코드는 기사에 표시됩니다. Bearer Token 인증: 토큰을 자격 증명으로 사용합니다. 확인 코드는 기사에 표시됩니다. 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)
    })
}

Bearer 토큰 인증

Bearer 토큰 인증은 토큰을 자격 증명으로 사용합니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.