golangでベーシック認証するのはどうしたら良いのかなー。って思ってたら、net/httpでhandlerに渡されるhttp.RequestBasicAuth()というメソッドが生えてました。 これはBASIC認証用のユーザ名、パスワード、ヘッダ解析のフラグという値を返してくれます。 なので、

1
2
3
4
5
6
7
8
9
func handler(w http.ResponseWriter, r *http.Request) {
    username, password, ok := r.BasicAuth()
    if !ok {
        return
    }
    if username == "hogehogeuser" && password == "fugafugapasswd" {
        // something
    }
}

とすることで認証することができます。簡単、簡単。 なお残念ながらダイジェスト認証はサポートされていない様子。