feat(auth): Forward-Auth via JWT-Cookie (YunoHost yunohost.portal)
Discovery zeigte: YunoHost reicht den Usernamen nicht als Header durch, sondern im signierten Cookie "yunohost.portal" (JWT, Claim "user"). Die Forward-Auth liest jetzt die Identitaet aus Header ODER Cookie - nur von der Proxy-Quell-IP akzeptiert. HS256-Signaturpruefung optional via TRUSTED_AUTH_JWT_SECRET (stdlib hmac, kein Dep). - config: trusted_auth_cookie / _cookie_claim / _jwt_secret - nginx-Vorlage + deploy/README: keine Identitaets-Header-Zeile mehr noetig; SSO-Schutz der Subdomain ist Pflicht (sonst Spoofing) - Tests: Cookie-Extraktion, Signaturpruefung, Proxy-IP-Trust Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
1899663308
commit
881a5ac2de
6 changed files with 169 additions and 27 deletions
|
|
@ -146,6 +146,12 @@ class Settings(BaseSettings):
|
|||
# Identitaet aus diesem Header gelesen (SSO-User) und ein interner Nutzer
|
||||
# automatisch angelegt. Sonst gilt die normale Token-/Anonymous-Auth.
|
||||
trusted_auth_header: str = ""
|
||||
# Alternativ zur Header-Variante: Identitaet aus einem (signierten) JWT-Cookie lesen.
|
||||
# YunoHost reicht den Usernamen nicht als Header durch, sondern im Cookie
|
||||
# "yunohost.portal" (JWT, Claim "user"). Nur von der Proxy-IP akzeptiert.
|
||||
trusted_auth_cookie: str = "" # Cookie-Name (z. B. yunohost.portal)
|
||||
trusted_auth_cookie_claim: str = "user" # JWT-Claim mit dem Usernamen
|
||||
trusted_auth_jwt_secret: str = "" # optional: HS256-Secret -> Signatur pruefen
|
||||
trusted_proxy_ips: str = "" # kommasepariert; IP(s) des Reverse-Proxys
|
||||
admin_users: str = "" # kommaseparierte SSO-Usernamen mit Admin-Rechten
|
||||
sso_logout_url: str = "" # Logout-Link fuers Frontend (SSO-Portal)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue