github.com/cvmfs/docker-graphdriver@v0.0.0-20181206110523-155ec6df0521/docker2cvmfs/lib/auth.go (about) 1 package lib 2 3 import ( 4 "encoding/json" 5 "io/ioutil" 6 "net/http" 7 "strings" 8 ) 9 10 func getAuthParams(authHeader string) map[string]string { 11 params := make(map[string]string) 12 13 for _, v := range strings.Split(authHeader, ",") { 14 s := strings.Split(v, "=") 15 cutset := "\"" 16 17 if s[0] == "Bearer realm" { 18 params["realm"] = strings.Trim(s[1], cutset) 19 } else if s[0] == "service" { 20 params["service"] = strings.Trim(s[1], cutset) 21 } else if s[0] == "scope" { 22 params["scope"] = strings.Trim(s[1], cutset) 23 } 24 } 25 26 return params 27 } 28 29 func getToken(authParams map[string]string) string { 30 tokenUrl := authParams["realm"] + "?service=" + authParams["service"] + 31 "&scope=" + authParams["scope"] 32 33 resp, _ := http.Get(tokenUrl) 34 35 body, _ := ioutil.ReadAll(resp.Body) 36 resp.Body.Close() 37 38 var m TokenMessage 39 json.Unmarshal(body, &m) 40 41 return m.Token 42 }