From ea26e56994318222248832de123bfd74f225d743 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sun, 21 Sep 2025 21:16:12 +0200 Subject: [PATCH] fix delayed setup of external auth providers (#529) --- internal/app/auth/auth.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/internal/app/auth/auth.go b/internal/app/auth/auth.go index 07c97e8..10ec1b1 100644 --- a/internal/app/auth/auth.go +++ b/internal/app/auth/auth.go @@ -125,11 +125,27 @@ func NewAuthenticator(cfg *config.Auth, extUrl string, bus EventBus, users UserM // It sets up the external authentication providers (OIDC, OAuth, LDAP) and retries in case of errors. func (a *Authenticator) StartBackgroundJobs(ctx context.Context) { go func() { + slog.Debug("setting up external auth providers...") + // Initialize local copies of authentication providers to allow retry in case of errors oidcQueue := a.cfg.OpenIDConnect oauthQueue := a.cfg.OAuth ldapQueue := a.cfg.Ldap + // Immediate attempt + failedOidc, failedOauth, failedLdap := a.setupExternalAuthProviders(oidcQueue, oauthQueue, ldapQueue) + if len(failedOidc) == 0 && len(failedOauth) == 0 && len(failedLdap) == 0 { + slog.Info("successfully setup all external auth providers") + return + } + + // Prepare for retries with only the failed ones + oidcQueue = failedOidc + oauthQueue = failedOauth + ldapQueue = failedLdap + slog.Warn("failed to setup some external auth providers, retrying in 30 seconds", + "failedOidc", len(failedOidc), "failedOauth", len(failedOauth), "failedLdap", len(failedLdap)) + ticker := time.NewTicker(30 * time.Second) // Ticker for delay between retries defer ticker.Stop()