github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/internal/selfregmanager/caller_provider.go (about) 1 package selfregmanager 2 3 import ( 4 "fmt" 5 6 "github.com/kyma-incubator/compass/components/director/internal/securehttp" 7 authpkg "github.com/kyma-incubator/compass/components/director/pkg/auth" 8 "github.com/kyma-incubator/compass/components/director/pkg/config" 9 "github.com/kyma-incubator/compass/components/director/pkg/oauth" 10 "github.com/pkg/errors" 11 ) 12 13 // CallerProvider is used to provide ExternalSvcCaller to call external services with given authentication 14 type CallerProvider struct{} 15 16 // GetCaller provides ExternalSvcCaller to call external services with given authentication 17 func (c *CallerProvider) GetCaller(config config.SelfRegConfig, region string) (ExternalSvcCaller, error) { 18 instanceConfig, exists := config.RegionToInstanceConfig[region] 19 if !exists { 20 return nil, errors.Errorf("missing configuration for region: %s", region) 21 } 22 23 var credentials authpkg.Credentials 24 if config.OAuthMode == oauth.Standard { 25 credentials = &authpkg.OAuthCredentials{ 26 ClientID: instanceConfig.ClientID, 27 ClientSecret: instanceConfig.ClientSecret, 28 TokenURL: instanceConfig.URL + config.OauthTokenPath, 29 } 30 } else if config.OAuthMode == oauth.Mtls { 31 mtlsCredentials, err := authpkg.NewOAuthMtlsCredentials(instanceConfig.ClientID, instanceConfig.Cert, instanceConfig.Key, instanceConfig.TokenURL, config.OauthTokenPath, config.ExternalClientCertSecretName) 32 if err != nil { 33 return nil, errors.Wrap(err, "while creating OAuth Mtls credentials") 34 } 35 credentials = mtlsCredentials 36 } else { 37 return nil, errors.New(fmt.Sprintf("unsupported OAuth mode: %s", config.OAuthMode)) 38 } 39 40 callerConfig := securehttp.CallerConfig{ 41 Credentials: credentials, 42 ClientTimeout: config.ClientTimeout, 43 SkipSSLValidation: config.SkipSSLValidation, 44 ExternalClientCertSecretName: config.ExternalClientCertSecretName, 45 } 46 caller, err := securehttp.NewCaller(callerConfig) 47 if err != nil { 48 return nil, err 49 } 50 51 return caller, nil 52 }