diff --git a/internal/config/errors.go b/internal/config/errors.go index bf853ede..7a46c049 100644 --- a/internal/config/errors.go +++ b/internal/config/errors.go @@ -5,5 +5,7 @@ import ( ) var ( - ErrLoadMTLSConfig = errors.New("failed to load MTLS config") + ErrLoadMTLSConfig = errors.New("failed to load MTLS config") + ErrLoadUsernameConfig = errors.New("failed to load username config") + ErrLoadPasswordConfig = errors.New("failed to load password config") ) diff --git a/internal/event-processor/reconciler.go b/internal/event-processor/reconciler.go index 3021c8cf..245ed7ec 100644 --- a/internal/event-processor/reconciler.go +++ b/internal/event-processor/reconciler.go @@ -342,23 +342,38 @@ func createAMQPTargets(ctx context.Context, cfg *config.EventProcessor) (map[str } func getAMQPOptions(cfg *config.EventProcessor) ([]amqp.ClientOption, error) { - if cfg.SecretRef.Type != commoncfg.MTLSSecretType { - return []amqp.ClientOption{}, nil - } - - tlsConfig, err := commoncfg.LoadMTLSConfig(&cfg.SecretRef.MTLS) - if err != nil { - return nil, errs.Wrap(config.ErrLoadMTLSConfig, err) - } - - return []amqp.ClientOption{ - func(o *goAmqp.ConnOptions) error { + var opts []amqp.ClientOption + switch cfg.SecretRef.Type { + case commoncfg.InsecureSecretType: + opts = append(opts, amqp.WithNoAuth()) + case commoncfg.MTLSSecretType: + tlsConfig, err := commoncfg.LoadMTLSConfig(&cfg.SecretRef.MTLS) + if err != nil { + return nil, errs.Wrap(config.ErrLoadMTLSConfig, err) + } + opts = append(opts, func(o *goAmqp.ConnOptions) error { o.TLSConfig = tlsConfig o.SASLType = goAmqp.SASLTypeExternal("") return nil - }, - }, nil + }) + case commoncfg.BasicSecretType: + username, err := commoncfg.ExtractValueFromSourceRef(&cfg.SecretRef.Basic.Username) + if err != nil { + return nil, errs.Wrap(config.ErrLoadUsernameConfig, err) + } + + pwd, err := commoncfg.ExtractValueFromSourceRef(&cfg.SecretRef.Basic.Password) + if err != nil { + return nil, errs.Wrap(config.ErrLoadPasswordConfig, err) + } + + opts = append(opts, amqp.WithBasicAuth(string(username), string(pwd))) + default: + // everything else is ignore intentionally + } + + return opts, nil } func getTracer(cfg *config.Config) trace.Tracer {