diff --git a/internal/oidc/oidc_credential.go b/internal/oidc/oidc_credential.go index b51cb2d7..850aee52 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,8 @@ 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, } case awsRegion != "" && accountID != "" && roleName != "" && domain != "" && domainOwner != "": audience := cred.GetString("audience") @@ -182,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 { diff --git a/internal/oidc/oidc_credential_test.go b/internal/oidc/oidc_credential_test.go index 2fd4a42a..8237aeb3 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{