diff --git a/pkg/assetsclient/oci/client.go b/pkg/assetsclient/oci/client.go index eece6b6d..87fc10ed 100644 --- a/pkg/assetsclient/oci/client.go +++ b/pkg/assetsclient/oci/client.go @@ -57,6 +57,8 @@ func NewClient() (*Client, error) { client := auth.Client{ Credential: auth.StaticCredential(config.registry, auth.Credential{ AccessToken: config.accessToken, + Username: config.username, + Password: config.password, }), } @@ -79,6 +81,8 @@ func NewClientForRepository(repo string) (*Client, error) { client := auth.Client{ Credential: auth.StaticCredential(config.registry, auth.Credential{ AccessToken: config.accessToken, + Username: config.username, + Password: config.password, }), } @@ -101,6 +105,8 @@ func (*factory) NewClient(ctx context.Context) (assetsclient.Client, error) { client := auth.Client{ Credential: auth.StaticCredential(config.registry, auth.Credential{ AccessToken: config.accessToken, + Username: config.username, + Password: config.password, }), } diff --git a/pkg/assetsclient/oci/credentials.go b/pkg/assetsclient/oci/credentials.go index 13c51db7..55c32e0c 100644 --- a/pkg/assetsclient/oci/credentials.go +++ b/pkg/assetsclient/oci/credentials.go @@ -26,12 +26,16 @@ const ( envOCIRegistry = "OCI_REGISTRY" envOCIRepository = "OCI_REPOSITORY" envOCIAccessToken = "OCI_ACCESS_TOKEN" + envOCIUsername = "OCI_USERNAME" + envOCIPassword = "OCI_PASSWORD" ) type ociConfig struct { registry string repository string accessToken string + username string + password string } func newOCIConfig() (ociConfig, error) { @@ -50,13 +54,23 @@ func newOCIConfig() (ociConfig, error) { config.repository = val val = os.Getenv(envOCIAccessToken) - if val == "" { - return ociConfig{}, fmt.Errorf("environment variable %s is not set", envOCIAccessToken) + if val != "" { + base64AccessToken := base64.StdEncoding.EncodeToString([]byte(val)) + config.accessToken = base64AccessToken + } else { + val = os.Getenv(envOCIUsername) + if val == "" { + return ociConfig{}, fmt.Errorf("environment variable %s is not set", envOCIUsername) + } + config.username = val + + val = os.Getenv(envOCIPassword) + if val == "" { + return ociConfig{}, fmt.Errorf("environment variable %s is not set", envOCIPassword) + } + config.password = val } - base64AccessToken := base64.StdEncoding.EncodeToString([]byte(val)) - config.accessToken = base64AccessToken - return config, nil } @@ -70,12 +84,22 @@ func newOCIConfigWithoutRepository() (ociConfig, error) { config.registry = val val = os.Getenv(envOCIAccessToken) - if val == "" { - return ociConfig{}, fmt.Errorf("environment variable %s is not set", envOCIAccessToken) + if val != "" { + base64AccessToken := base64.StdEncoding.EncodeToString([]byte(val)) + config.accessToken = base64AccessToken + } else { + val = os.Getenv(envOCIUsername) + if val == "" { + return ociConfig{}, fmt.Errorf("environment variable %s is not set", envOCIUsername) + } + config.username = val + + val = os.Getenv(envOCIPassword) + if val == "" { + return ociConfig{}, fmt.Errorf("environment variable %s is not set", envOCIPassword) + } + config.password = val } - base64AccessToken := base64.StdEncoding.EncodeToString([]byte(val)) - config.accessToken = base64AccessToken - return config, nil }