From 66f3642676d439b2aa9a35be1141613fb7f31503 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 11 Sep 2026 10:10:48 +0000 Subject: [PATCH 1/3] Support JFrog org-level OIDC field aliases Co-authored-by: v-thavaahariharangit <164553783+v-thavaahariharangit@users.noreply.github.com> --- internal/oidc/oidc_credential.go | 25 +++++++++++++++++++++---- internal/oidc/oidc_credential_test.go | 15 +++++++++++++++ 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/internal/oidc/oidc_credential.go b/internal/oidc/oidc_credential.go index b51cb2d7..f2ffc86d 100644 --- a/internal/oidc/oidc_credential.go +++ b/internal/oidc/oidc_credential.go @@ -97,8 +97,15 @@ func CreateOIDCCredential(cred config.Credential, client *http.Client) (*OIDCCre clientID := cred.GetString("client-id") // jfrog values - feedUrl := cred.GetString("url") - jfrogOidcProviderName := cred.GetString("jfrog-oidc-provider-name") + feedUrl := getFirstString(cred, "url", "registry") + jfrogOidcProviderName := getFirstString(cred, "jfrog-oidc-provider-name", "oidc-provider-name") + jfrogAudience := getFirstString(cred, "audience", "oidc-audience") + jfrogIdentityMappingName := getFirstString( + cred, + "identity-mapping-name", + "oidc-identity-mapping-name", + "jfrog-oidc-identity-mapping-name", + ) // aws values awsRegion := cred.GetString("aws-region") @@ -133,8 +140,18 @@ func CreateOIDCCredential(cred config.Credential, client *http.Client) (*OIDCCre JFrogURL: fmt.Sprintf("%s://%s", jfrogUrlParsed.Scheme, jfrogUrlParsed.Host), ProviderName: jfrogOidcProviderName, // optional - Audience: cred.GetString("audience"), - IdentityMappingName: cred.GetString("identity-mapping-name"), + Audience: jfrogAudience, + IdentityMappingName: jfrogIdentityMappingName, + } + + func getFirstString(cred config.Credential, keys ...string) string { + for _, key := range keys { + if value := cred.GetString(key); value != "" { + return value + } + } + + return "" } case awsRegion != "" && accountID != "" && roleName != "" && domain != "" && domainOwner != "": audience := cred.GetString("audience") diff --git a/internal/oidc/oidc_credential_test.go b/internal/oidc/oidc_credential_test.go index 2fd4a42a..10e334bd 100644 --- a/internal/oidc/oidc_credential_test.go +++ b/internal/oidc/oidc_credential_test.go @@ -185,6 +185,21 @@ func TestTryCreateOIDCCredential(t *testing.T) { IdentityMappingName: "test-mapping", }, }, + { + "jfrog with org-level aliases", + config.Credential{ + "registry": "https://jfrog.example.com/artifactory/api/npm/my-feed", + "oidc-provider-name": "some-provider", + "oidc-audience": "test-audience", + "jfrog-oidc-identity-mapping-name": "test-mapping", + }, + &JFrogOIDCParameters{ + JFrogURL: "https://jfrog.example.com", + ProviderName: "some-provider", + Audience: "test-audience", + IdentityMappingName: "test-mapping", + }, + }, { "looks like jfrog but missing provider-name", config.Credential{ From 5d47cd2c6b4c4616c9bcefa02cafc0398d238456 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 11 Sep 2026 10:11:45 +0000 Subject: [PATCH 2/3] Fix JFrog OIDC parsing for org-level registry fields Co-authored-by: v-thavaahariharangit <164553783+v-thavaahariharangit@users.noreply.github.com> --- internal/oidc/oidc_credential.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/internal/oidc/oidc_credential.go b/internal/oidc/oidc_credential.go index f2ffc86d..850aee52 100644 --- a/internal/oidc/oidc_credential.go +++ b/internal/oidc/oidc_credential.go @@ -143,16 +143,6 @@ func CreateOIDCCredential(cred config.Credential, client *http.Client) (*OIDCCre Audience: jfrogAudience, IdentityMappingName: jfrogIdentityMappingName, } - - func getFirstString(cred config.Credential, keys ...string) string { - for _, key := range keys { - if value := cred.GetString(key); value != "" { - return value - } - } - - return "" - } case awsRegion != "" && accountID != "" && roleName != "" && domain != "" && domainOwner != "": audience := cred.GetString("audience") if audience == "" { @@ -199,6 +189,16 @@ func CreateOIDCCredential(cred config.Credential, client *http.Client) (*OIDCCre }, nil } +func getFirstString(cred config.Credential, keys ...string) string { + for _, key := range keys { + if value := cred.GetString(key); value != "" { + return value + } + } + + return "" +} + // GetOrRefreshOIDCToken gets a cached token or fetches a new one if expired func GetOrRefreshOIDCToken(cred *OIDCCredential, ctx context.Context) (string, error) { if cred.isRejected { From 3bcdfaef37c3c936f2d64a3eec72afcf2edd6c6f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 11 Sep 2026 10:12:39 +0000 Subject: [PATCH 3/3] Format OIDC files after validation feedback Co-authored-by: v-thavaahariharangit <164553783+v-thavaahariharangit@users.noreply.github.com> --- internal/oidc/oidc_credential_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/oidc/oidc_credential_test.go b/internal/oidc/oidc_credential_test.go index 10e334bd..8237aeb3 100644 --- a/internal/oidc/oidc_credential_test.go +++ b/internal/oidc/oidc_credential_test.go @@ -188,9 +188,9 @@ func TestTryCreateOIDCCredential(t *testing.T) { { "jfrog with org-level aliases", config.Credential{ - "registry": "https://jfrog.example.com/artifactory/api/npm/my-feed", - "oidc-provider-name": "some-provider", - "oidc-audience": "test-audience", + "registry": "https://jfrog.example.com/artifactory/api/npm/my-feed", + "oidc-provider-name": "some-provider", + "oidc-audience": "test-audience", "jfrog-oidc-identity-mapping-name": "test-mapping", }, &JFrogOIDCParameters{