forked from mirror/client_golang
Implement simple basic auth for the exporter
So this can be quickly thrown into public projects until better methods of authentications are available
This commit is contained in:
parent
474d1d53d1
commit
ca53ce1081
26
registry.go
26
registry.go
|
@ -9,6 +9,7 @@ the LICENSE file.
|
||||||
package registry
|
package registry
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/base64"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"github.com/matttproud/golang_instrumentation/maths"
|
"github.com/matttproud/golang_instrumentation/maths"
|
||||||
"github.com/matttproud/golang_instrumentation/metrics"
|
"github.com/matttproud/golang_instrumentation/metrics"
|
||||||
|
@ -117,6 +118,31 @@ func (r *Registry) Register(name string, metric metrics.Metric) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (register *Registry) YieldProtectedExporter(username, password string) http.HandlerFunc {
|
||||||
|
exporter := register.YieldExporter()
|
||||||
|
|
||||||
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
authenticated := false
|
||||||
|
|
||||||
|
if auth := r.Header.Get("Authorization"); auth != "" {
|
||||||
|
base64Encoded := strings.SplitAfter(auth, " ")[1]
|
||||||
|
decoded, err := base64.URLEncoding.DecodeString(base64Encoded)
|
||||||
|
if err == nil {
|
||||||
|
usernamePassword := strings.Split(string(decoded), ":")
|
||||||
|
if usernamePassword[0] == username && usernamePassword[1] == password {
|
||||||
|
authenticated = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if authenticated {
|
||||||
|
exporter.ServeHTTP(w, r)
|
||||||
|
} else {
|
||||||
|
http.Error(w, "access forbidden", 403)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Create a http.HandlerFunc that is tied to r Registry such that requests
|
Create a http.HandlerFunc that is tied to r Registry such that requests
|
||||||
against it generate a representation of the housed metrics.
|
against it generate a representation of the housed metrics.
|
||||||
|
|
Loading…
Reference in New Issue