Skip to content

Commit 3e699a3

Browse files
authoredMar 25, 2025··
Merge pull request #5964 from vvoland/fix-auth-regressionq
Revert "cli/command: remove uses of GetAuthConfigKey, ParseRepositoryInfo"
2 parents 2b0631f + f596202 commit 3e699a3

File tree

1 file changed

+10
-31
lines changed

1 file changed

+10
-31
lines changed
 

‎cli/command/registry.go

+10-31
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"github.com/docker/cli/cli/streams"
1616
"github.com/docker/cli/internal/tui"
1717
registrytypes "github.com/docker/docker/api/types/registry"
18+
"github.com/docker/docker/registry"
1819
"github.com/morikuni/aec"
1920
"github.com/pkg/errors"
2021
)
@@ -27,22 +28,16 @@ const (
2728
"for organizations using SSO. Learn more at https://docs.docker.com/go/access-tokens/"
2829
)
2930

30-
// authConfigKey is the key used to store credentials for Docker Hub. It is
31-
// a copy of [registry.IndexServer].
32-
//
33-
// [registry.IndexServer]: https://pkg.go.dev/github.com/docker/docker/registry#IndexServer
34-
const authConfigKey = "https:/index.docker.io/v1/"
35-
3631
// RegistryAuthenticationPrivilegedFunc returns a RequestPrivilegeFunc from the specified registry index info
3732
// for the given command.
3833
func RegistryAuthenticationPrivilegedFunc(cli Cli, index *registrytypes.IndexInfo, cmdName string) registrytypes.RequestAuthConfig {
39-
configKey := getAuthConfigKey(index.Name)
40-
isDefaultRegistry := configKey == authConfigKey || index.Official
4134
return func(ctx context.Context) (string, error) {
4235
_, _ = fmt.Fprintf(cli.Out(), "\nLogin prior to %s:\n", cmdName)
43-
authConfig, err := GetDefaultAuthConfig(cli.ConfigFile(), true, configKey, isDefaultRegistry)
36+
indexServer := registry.GetAuthConfigKey(index)
37+
isDefaultRegistry := indexServer == registry.IndexServer
38+
authConfig, err := GetDefaultAuthConfig(cli.ConfigFile(), true, indexServer, isDefaultRegistry)
4439
if err != nil {
45-
_, _ = fmt.Fprintf(cli.Err(), "Unable to retrieve stored credentials for %s, error: %s.\n", authConfigKey, err)
40+
_, _ = fmt.Fprintf(cli.Err(), "Unable to retrieve stored credentials for %s, error: %s.\n", indexServer, err)
4641
}
4742

4843
select {
@@ -51,7 +46,7 @@ func RegistryAuthenticationPrivilegedFunc(cli Cli, index *registrytypes.IndexInf
5146
default:
5247
}
5348

54-
authConfig, err = PromptUserForCredentials(ctx, cli, "", "", authConfig.Username, authConfigKey)
49+
authConfig, err = PromptUserForCredentials(ctx, cli, "", "", authConfig.Username, indexServer)
5550
if err != nil {
5651
return "", err
5752
}
@@ -68,7 +63,7 @@ func RegistryAuthenticationPrivilegedFunc(cli Cli, index *registrytypes.IndexInf
6863
func ResolveAuthConfig(cfg *configfile.ConfigFile, index *registrytypes.IndexInfo) registrytypes.AuthConfig {
6964
configKey := index.Name
7065
if index.Official {
71-
configKey = authConfigKey
66+
configKey = registry.IndexServer
7267
}
7368

7469
a, _ := cfg.GetAuthConfig(configKey)
@@ -137,7 +132,7 @@ func PromptUserForCredentials(ctx context.Context, cli Cli, argUser, argPassword
137132

138133
argUser = strings.TrimSpace(argUser)
139134
if argUser == "" {
140-
if serverAddress == authConfigKey {
135+
if serverAddress == registry.IndexServer {
141136
// When signing in to the default (Docker Hub) registry, we display
142137
// hints for creating an account, and (if hints are enabled), using
143138
// a token instead of a password.
@@ -230,25 +225,9 @@ func resolveAuthConfigFromImage(cfg *configfile.ConfigFile, image string) (regis
230225
if err != nil {
231226
return registrytypes.AuthConfig{}, err
232227
}
233-
configKey := getAuthConfigKey(reference.Domain(registryRef))
234-
a, err := cfg.GetAuthConfig(configKey)
228+
repoInfo, err := registry.ParseRepositoryInfo(registryRef)
235229
if err != nil {
236230
return registrytypes.AuthConfig{}, err
237231
}
238-
return registrytypes.AuthConfig(a), nil
239-
}
240-
241-
// getAuthConfigKey special-cases using the full index address of the official
242-
// index as the AuthConfig key, and uses the (host)name[:port] for private indexes.
243-
//
244-
// It is similar to [registry.GetAuthConfigKey], but does not require on
245-
// [registrytypes.IndexInfo] as intermediate.
246-
//
247-
// [registry.GetAuthConfigKey]: https://pkg.go.dev/github.com/docker/docker/registry#GetAuthConfigKey
248-
// [registrytypes.IndexInfo]:https://pkg.go.dev/github.com/docker/docker/api/types/registry#IndexInfo
249-
func getAuthConfigKey(domainName string) string {
250-
if domainName == "docker.io" || domainName == "index.docker.io" {
251-
return authConfigKey
252-
}
253-
return domainName
232+
return ResolveAuthConfig(cfg, repoInfo.Index), nil
254233
}

0 commit comments

Comments
 (0)
Please sign in to comment.