func basicCredentialsFromKeyring(keyring credentialprovider.DockerKeyring, target *url.URL) (string, string) { // TODO: compare this logic to Docker authConfig in v2 configuration value := target.Host + target.Path // Lookup(...) expects an image (not a URL path). // The keyring strips /v1/ and /v2/ version prefixes, // so we should also when selecting a valid auth for a URL. pathWithSlash := target.Path + "/" if strings.HasPrefix(pathWithSlash, "/v1/") || strings.HasPrefix(pathWithSlash, "/v2/") { value = target.Host + target.Path[3:] } configs, found := keyring.Lookup(value) if !found || len(configs) == 0 { // do a special case check for docker.io to match historical lookups when we respond to a challenge if value == "auth.docker.io/token" { glog.V(5).Infof("Being asked for %s, trying %s for legacy behavior", target, "index.docker.io/v1") return basicCredentialsFromKeyring(keyring, &url.URL{Host: "index.docker.io", Path: "/v1"}) } // docker 1.9 saves 'docker.io' in config in f23, see https://bugzilla.redhat.com/show_bug.cgi?id=1309739 if value == "index.docker.io" { glog.V(5).Infof("Being asked for %s, trying %s for legacy behavior", target, "docker.io") return basicCredentialsFromKeyring(keyring, &url.URL{Host: "docker.io"}) } glog.V(5).Infof("Unable to find a secret to match %s (%s)", target, value) return "", "" } glog.V(5).Infof("Found secret to match %s (%s): %s", target, value, configs[0].ServerAddress) return configs[0].Username, configs[0].Password }
func basicCredentialsFromKeyring(keyring credentialprovider.DockerKeyring, url *url.URL) (string, string) { // TODO: compare this logic to Docker authConfig in v2 configuration value := url.Host + url.Path configs, found := keyring.Lookup(value) if !found || len(configs) == 0 { glog.V(5).Infof("Unable to find a secret to match %s (%s)", url, value) return "", "" } return configs[0].Username, configs[0].Password }
func basicCredentialsFromKeyring(keyring credentialprovider.DockerKeyring, target *url.URL) (string, string) { // TODO: compare this logic to Docker authConfig in v2 configuration value := target.Host + target.Path configs, found := keyring.Lookup(value) if !found || len(configs) == 0 { // do a special case check for docker.io to match historical lookups when we respond to a challenge if value == "auth.docker.io/token" { glog.V(5).Infof("Being asked for %s, trying %s for legacy behavior", target, "index.docker.io/v1") return basicCredentialsFromKeyring(keyring, &url.URL{Host: "index.docker.io", Path: "/v1"}) } glog.V(5).Infof("Unable to find a secret to match %s (%s)", target, value) return "", "" } glog.V(5).Infof("Found secret to match %s (%s): %s", target, value, configs[0].ServerAddress) return configs[0].Username, configs[0].Password }