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  }