fix: Hinter einem Reverse Proxy zeigte die SSO-Rueckleitung nach innen
Die Adresse, an die der Anmeldedienst zurueckschickt, wurde aus der Anfrage abgeleitet. Hinter einem Proxy ist das die INTERNE – http://10.0.0.5:8071/… –, denn uvicorn lief ohne --proxy-headers. Der Anmeldedienst haette die Rueckleitung abgewiesen, mit einer Meldung, die nicht sagt, woran es liegt. APP_PUBLIC_BASE_URL sagt es ihm jetzt ausdruecklich. Leer bleiben darf sie weiterhin: ohne Proxy und in der Entwicklung genuegt die Anfrage. Die Referenz-Unit bekommt zusaetzlich --proxy-headers. Das hilft neuen Installationen; bestehende ruehrt update.sh nicht an, deshalb ist die Einstellung der verlaessliche Weg. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
7690718731
commit
bd2c623136
@@ -431,3 +431,37 @@ def test_konto_ohne_passwort_faellt_beim_passwort_login_nicht_durch(client, anbi
|
||||
eintrag = s.query(UserIdentity).filter(UserIdentity.subject == sub).first()
|
||||
s.delete(s.get(User, eintrag.user_id))
|
||||
s.commit()
|
||||
|
||||
|
||||
# --- Rueckleit-Adresse hinter einem Proxy ------------------------------------
|
||||
|
||||
|
||||
def test_oeffentliche_adresse_schlaegt_die_der_anfrage(client, anbieter, monkeypatch):
|
||||
"""Hinter einem Reverse Proxy kaeme aus der Anfrage die INTERNE Adresse –
|
||||
der Anmeldedienst weist sie ab, und die Fehlermeldung sagt nicht, warum."""
|
||||
from urllib.parse import parse_qs, urlparse
|
||||
|
||||
from app.config import get_settings
|
||||
|
||||
get_settings.cache_clear()
|
||||
monkeypatch.setenv("APP_PUBLIC_BASE_URL", "https://certain.example.com")
|
||||
try:
|
||||
r = client.get("/api/auth/oidc/authentik/start", follow_redirects=False)
|
||||
frage = parse_qs(urlparse(r.headers["location"]).query)
|
||||
assert frage["redirect_uri"] == [
|
||||
"https://certain.example.com/api/auth/oidc/authentik/callback"
|
||||
], frage["redirect_uri"]
|
||||
finally:
|
||||
get_settings.cache_clear()
|
||||
|
||||
|
||||
def test_ohne_einstellung_kommt_die_adresse_aus_der_anfrage(client, anbieter):
|
||||
"""Ohne Proxy und in der Entwicklung soll nichts eingestellt werden muessen."""
|
||||
from urllib.parse import parse_qs, urlparse
|
||||
|
||||
from app.config import get_settings
|
||||
|
||||
get_settings.cache_clear()
|
||||
r = client.get("/api/auth/oidc/authentik/start", follow_redirects=False)
|
||||
frage = parse_qs(urlparse(r.headers["location"]).query)
|
||||
assert frage["redirect_uri"][0].endswith("/api/auth/oidc/authentik/callback")
|
||||
|
||||
Reference in New Issue
Block a user