Luke Granger-Brown
04c3a8431b
This is a small "library" for wrapping binaries with magic OAuth authentication based on the automatically-injected k8s service account tokens and OpenShift's OAuth service. There's an example of this deployed at https://example-lukegb-openshiftauth-test.apps.k8s.lukegb.tech/. The main pieces of setup that need to happen is: * Set "serviceAccount" in pod definition * Add Route for pod * Edit serviceaccount and add metadata.annotations, e.g.: serviceaccounts.openshift.io/oauth-redirectreference.first: >- {"kind":"OAuthRedirectReference","apiVersion":"v1","reference":{"kind":"Route","name":"example"}}
34 lines
750 B
Go
34 lines
750 B
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
|
|
"github.com/gorilla/mux"
|
|
"hg.lukegb.com/lukegb/depot/go/openshiftauth"
|
|
)
|
|
|
|
func main() {
|
|
r := mux.NewRouter()
|
|
authR, err := openshiftauth.NewRouter(r)
|
|
if err != nil {
|
|
log.Fatalf("openshiftauth.NewRouter: %v", err)
|
|
}
|
|
|
|
authR.HandleFunc("/", func(rw http.ResponseWriter, r *http.Request) {
|
|
u := openshiftauth.UserFromContext(r.Context())
|
|
rw.Header().Set("Content-Type", "application/json")
|
|
enc := json.NewEncoder(rw)
|
|
enc.SetIndent("", " ")
|
|
enc.Encode(u)
|
|
})
|
|
r.HandleFunc("/healthz", func(rw http.ResponseWriter, r *http.Request) {
|
|
rw.Header().Set("Content-Type", "text/plain")
|
|
fmt.Fprintf(rw, "ok")
|
|
})
|
|
|
|
http.Handle("/", r)
|
|
http.ListenAndServe(":8080", nil)
|
|
}
|