From d551f321035089b7b9e2ea19e2e797cd5dfe0434 Mon Sep 17 00:00:00 2001 From: Stefan Jacobi Date: Thu, 6 Jun 2024 11:20:03 +0200 Subject: [PATCH] feat(saml): make getting providers from metadata non-panic (#1464) * feat(saml): make getting providers from metadata non-panic * show a warning if a provider cannot be fetched by its metadata url * skip the provider in provisioning state Closes: #1445 * chore(provider): add provider name to error message adds the idp config provider name to error message when the provider host cannot be parsed from metadata url or fetching metadata document fails. Closes: #1445 --------- Co-authored-by: Stefan Jacobi --- backend/ee/saml/handler.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/backend/ee/saml/handler.go b/backend/ee/saml/handler.go index b158c4578..5f4310297 100644 --- a/backend/ee/saml/handler.go +++ b/backend/ee/saml/handler.go @@ -33,15 +33,17 @@ func NewSamlHandler(cfg *config.Config, persister persistence.Persister, session providers := make([]provider.ServiceProvider, 0) for _, idpConfig := range cfg.Saml.IdentityProviders { if idpConfig.Enabled { - name := "" - name, err := parseProviderFromMetadataUrl(idpConfig.MetadataUrl) + hostName := "" + hostName, err := parseProviderFromMetadataUrl(idpConfig.MetadataUrl) if err != nil { - panic(err) + fmt.Printf("failed to parse provider '%s' from metadata url: %v\n", idpConfig.Name, err) + continue } - newProvider, err := provider.GetProvider(name, cfg, idpConfig, persister.GetSamlCertificatePersister()) + newProvider, err := provider.GetProvider(hostName, cfg, idpConfig, persister.GetSamlCertificatePersister()) if err != nil { - panic(err) + fmt.Printf("failed to initialize provider '%s': %v\n", idpConfig.Name, err) + continue } providers = append(providers, newProvider)