OAuth-Authentifizierung in Portainer über zwei Domains funktioniert nicht (Traefik & Authentik)

Bx99

Benutzer
Mitglied seit
09. Okt 2023
Beiträge
13
Punkte für Reaktionen
5
Punkte
3
Hallo zusammen,

ich stehe vor einem Problem mit der OAuth-Authentifizierung in Portainer über zwei verschiedene Domains und hoffe auf eure Unterstützung.

Ausgangssituation:

  • Ich nutze Portainer zur Verwaltung meiner Docker-Umgebung.
  • Als Reverse Proxy setze ich Traefik ein.
  • Für die OAuth-Authentifizierung verwende ich Authentik als Identity Provider.
  • Ich möchte auf Portainer über zwei verschiedene Domainszugreifen:
    • Externe Domain: portainer.example.com
    • Interne Domain: portainer.intern
Problem:

Portainer erlaubt in seinen Einstellungen für die OAuth-Authentifizierung nur die Angabe einer einzigen Redirect-URL. Das führt dazu, dass die OAuth-Anmeldung standardmäßig nur über eine Domain funktioniert.

Wenn ich die Redirect-URL in Portainer auf https://portainer.example.com/ setze, funktioniert die OAuth-Anmeldung über diese Domain einwandfrei. Versuche ich jedoch, mich über die interne Domain https://portainer.intern anzumelden, erhalte ich den Fehler:

"Invalid OAuth state, try again."

Bisherige Lösungsansätze:


  1. Host-Header-Umschreibung in Traefik:
    • Ich habe versucht, den Host-Header in Traefik umzuschreiben, sodass Anfragen von der internen Domain an Portainer mit dem externen Host-Header weitergeleitet werden.
    • Das führte jedoch zu Problemen mit Sessions und Cookies, da diese an die ursprüngliche Domain gebunden sind. Dadurch tritt der oben genannte Fehler auf.
  2. Verwendung eines OAuth2-Proxys:
    • Ich habe erwogen, einen OAuth2-Proxy einzusetzen, der die Authentifizierung vor Portainer abwickelt.
    • Dabei wurde ich jedoch beim Zugriff auf Portainer zweimal zur Anmeldung aufgefordert: einmal vom Proxy und dann erneut über den OAuth-Button in Portainer.
    • Dieses doppelte Anmelden möchte ich vermeiden.
  3. Einsatz des Proxy Providers in Authentik:
    • Der Proxy Provider von Authentik eignet sich eher für Anwendungen, die keine native OAuth-Unterstützung haben. Da ich die OAuth-Funktionalität in Portainer direkt nutzen möchte, ist dieser Ansatz für mich nicht geeignet.
  4. Verwendung einer einzigen Domain:
    • Die Beschränkung auf eine einzige Domain ist für mich leider keine Option, da ich sowohl die externe als auch die interne Domain nutzen möchte.
Frage:

Gibt es eine Möglichkeit, die OAuth-Anmeldung in Portainer so zu konfigurieren, dass sie über beide Domainsfunktioniert, ohne dass ich mich doppelt anmelden muss oder auf eine Domain verzichten muss? Ich möchte über beide Domains auf Portainer zugreifen und den OAuth-Login-Button verwenden können, ohne dass Session-Probleme oder der Fehler "Invalid OAuth state, try again." auftreten.

Ich bin offen für alternative Ansätze oder Lösungen, die mein Problem lösen könnten.
Vielen Dank im Voraus für eure Hilfe!
 

Ulfhednir

Benutzer
Sehr erfahren
Mitglied seit
26. Aug 2013
Beiträge
3.503
Punkte für Reaktionen
1.093
Punkte
194
Die Einstellungsmöglichkeiten sind ja technisch vorgegeben. Ich wüsste jetzt nicht, wie man das umgehen könnte.
Insofern zwei einfache Fragen:

Was stört dich daran grundsätzlich über https://portainer.example.com zuzugreifen? Klingt nach einem reiner Bequemlichkeit. Es gäbe ja durchaus auch Lesezeichen, um das Problem zu umschiffen.
Hast du schon mal probeweise die LDAP-Authentifizierung in Betracht gezogen?
 

Bx99

Benutzer
Mitglied seit
09. Okt 2023
Beiträge
13
Punkte für Reaktionen
5
Punkte
3
Hallo zusammen,

danke für die Rückmeldung, @Ulfhednir

  1. Interner vs. Externer Datenfluss über Cloudflare: Der Grund, warum ich den Zugriff über beide Domains ermöglichen möchte, liegt darin, dass ich entscheiden können will, ob der Datenverkehr über das interne Netzwerk oder extern über Cloudflare läuft. Bei Portainer mag dies weniger von Bedeutung sein, aber das Problem betrifft auch andere Container, bei denen der Unterschied wichtiger ist, zum Beispiel bei Diensten, die keine unnötige externe Kommunikation verursachen sollen.
  2. Bequemlichkeit: Ja, ich gebe zu, es ist durchaus ein Bequemlichkeitsfaktor, der hier eine Rolle spielt. Natürlich könnte ich auf das einfache Umschalten zwischen internen und externen Zugriff verzichten, aber es wäre einfach schön, den vollen Komfort zu haben.
  3. LDAP-Authentifizierung: Danke für den Vorschlag! Ich habe mich noch nicht näher mit der LDAP-Authentifizierung beschäftigt. Der Vorteil der OAuth-Integration über Authentik ist für mich jedoch, dass ich mich mit Single-Sign-On nahtlos bei Diensten wie Portainer anmelden kann, ohne ein Passwort manuell eingeben zu müssen. Das ist für mich der eigentliche Zweck des Ganzen, also einfach und sicher über OAuth authentifiziert zu sein.
Danke nochmal für den Input!
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat