Go では、認証方法には次のものが含まれます: 基本認証: ユーザー名とパスワードを使用します。確認コードは記事に示されています。 Bearer Token Authentication: トークンを資格情報として使用します。検証コードは記事に示されています。 OAuth 2.0 認証: 認証プロトコル、検証コードは記事に示されています。実践例: すべてのルートで基本認証を有効にするコードが記事に記載されています。
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 は、ユーザーがサードパーティのアプリケーションに自分のデータへのアクセスを承認できるようにする、広く使用されている承認プロトコルです。
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 サイトの他の関連記事を参照してください。