fix(oidc): Nonce-Pruefung selbst kontrollieren statt Authlib zu ueberlassen
Authlib wertet "Aufrufer hat eine Nonce uebergeben, das Token traegt keine" als Mismatch. Das ist fuer den erneuerten Token der mobilen Clients falsch: ein per Refresh-Token geholtes ID-Token laesst die nonce-Claim regulaer weg, womit der Hintergrund-Refresh immer an einem 401 gescheitert waere. Die Nonce wird daher nicht mehr an Authlib durchgereicht, sondern hier geprueft: vorhandene Nonce muss passen, und der Browser-Flow verlangt sie zusaetzlich zwingend (require_nonce) — dort erzeugen wir sie selbst, also muss der Provider sie zurueckspiegeln. Signatur und uebrige Claims bleiben unveraendert bei Authlib. Zwei Tests dazu: erneuertes Token ohne Nonce wird angenommen, Browser-Flow ohne Nonce abgelehnt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
07235fd4c9
commit
b560ee260c
@@ -208,6 +208,8 @@ def oidc_callback(provider_key: str, request: Request,
|
||||
provider, tokens["id_token"],
|
||||
expected_audience=provider.client_id,
|
||||
nonce=payload.get("n"),
|
||||
# We generated this nonce; the provider must echo it back.
|
||||
require_nonce=True,
|
||||
access_token=tokens.get("access_token"),
|
||||
)
|
||||
if not claims.get("email"):
|
||||
|
||||
Reference in New Issue
Block a user