The /consent POST handler trusted the scope values submitted in the form, so a forged consent submission could approve (and persist consent for) scopes that were never part of the originating authorization request — a scope-escalation vector. Intersect the submitted scopes with the originally requested set stored in the session before saving consent and completing the flow. Refs: porchlight-a03 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| test_app_integration.py | ||
| test_authorization.py | ||
| test_claims.py | ||
| test_consent_flow.py | ||
| test_discovery.py | ||
| test_e2e_flow.py | ||
| test_login_oidc_redirect.py | ||
| test_provider.py | ||
| test_token.py | ||
| test_userinfo.py | ||