fix(oidc): klare Meldung bei einem OIDC_ISSUER ohne Schema

OIDC_ISSUER=PocketID (der Name statt der Adresse) endete in
unsupported protocol scheme "" – tief aus der Bibliothek, ohne Hinweis
auf die Ursache. Und weil ein Fehlschlag hier den Start abbricht, stand
die ganze Cloud wegen einer Zeile in der .env.

Jetzt wird vorher geprueft und die Zeile beim Namen genannt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
HoneyandClaude Opus 5 committed 2026-08-24 13:01:21 +02:00
1 parent ebff565367
commit 617c665a2e
3 files changed
+17 -4

No files matched your search

+13 -1
View File
@@ -7,6 +7,7 @@ import (
"encoding/json"
"fmt"
"net/http"
"net/url"
"strings"
gooidc "github.com/coreos/go-oidc/v3/oidc"
@@ -46,9 +47,20 @@ func New(ctx context.Context, cfg Config, authStore *auth.Store, sessions *auth.
if cfg.Issuer == "" {
return nil, nil
}
// Erst prüfen, ob überhaupt eine Adresse dasteht. Sonst hängt der Fehler
// tief in der Bibliothek: `unsupported protocol scheme ""` sagt nicht,
// dass jemand den *Namen* des Anbieters eingetragen hat statt seiner URL.
// Und weil ein Fehlschlag hier den Start abbricht, steht die ganze Cloud
// wegen einer Zeile in der .env – dann soll die Zeile wenigstens genannt
// werden. (Gemessen mit OIDC_ISSUER=PocketID.)
if u, uerr := url.Parse(cfg.Issuer); uerr != nil || u.Scheme == "" || u.Host == "" {
return nil, fmt.Errorf(
"OIDC_ISSUER muss die vollstaendige Adresse des Anbieters sein, "+
"z. B. https://id.example.com – gefunden: %q", cfg.Issuer)
}
provider, err := gooidc.NewProvider(ctx, cfg.Issuer)
if err != nil {
return nil, fmt.Errorf("oidc provider: %w", err)
return nil, fmt.Errorf("oidc provider %q nicht erreichbar: %w", cfg.Issuer, err)
}
oauthCfg := &oauth2.Config{
ClientID: cfg.ClientID,