Skip to content

Commit

Permalink
fix: needed to remove scheme assumption on supplied serverURL
Browse files Browse the repository at this point in the history
  • Loading branch information
Chris Mellard committed Oct 7, 2020
1 parent 5d6583c commit 02bbe75
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 12 deletions.
2 changes: 2 additions & 0 deletions pkg/registry/const.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,7 @@ import (
"time"
)

const secureScheme = "https://"

var defaultTimeOut = time.Duration(30) * time.Second
var OAuthHTTPContext = context.Background()
22 changes: 10 additions & 12 deletions pkg/registry/registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,19 +33,17 @@ func GetRegistryRefreshTokenFromAADExchange(serverURL string, principalToken *ad
return "", fmt.Errorf("error refreshing sp token - %w", err)
}

registryName, err := getRegistryURL(serverURL)
if err != nil {
return "", fmt.Errorf("failed to parse server URL - %w", err)
}
refreshTokenClient := containerregistry.NewRefreshTokensClient(registryName.String())
authorizer := autorest.NewBearerAuthorizer(principalToken)

refreshTokenClient := containerregistry.NewRefreshTokensClient(serverURL)
refreshTokenClient.Authorizer = authorizer
ctx, cancel := context.WithTimeout(OAuthHTTPContext, defaultTimeOut)
defer cancel()

registryName, err := parseRegistryName(serverURL)
if err != nil {
return "", fmt.Errorf("failed to parse server URL - %w", err)
}

rt, err := refreshTokenClient.GetFromExchange(ctx, "access_token", registryName, tenantID, "", principalToken.Token().AccessToken)
rt, err := refreshTokenClient.GetFromExchange(ctx, "access_token", serverURL, tenantID, "", principalToken.Token().AccessToken)

if err != nil {
return "", fmt.Errorf("failed to get refresh token for container registry - %w", err)
Expand All @@ -55,11 +53,11 @@ func GetRegistryRefreshTokenFromAADExchange(serverURL string, principalToken *ad
}

// parseRegistryName parses a serverURL and returns the registry name (i.e. minus transport scheme)
func parseRegistryName(serverURL string) (string, error) {
sURL, err := url.Parse(serverURL)
func getRegistryURL(serverURL string) (*url.URL, error) {
sURL, err := url.Parse(secureScheme + serverURL)
if err != nil {
return "", fmt.Errorf("failed to parse server URL - %w", err)
return &url.URL{}, fmt.Errorf("failed to parse server URL - %w", err)
}

return sURL.Host, nil
return sURL, nil
}

0 comments on commit 02bbe75

Please sign in to comment.