You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix feedbackInfo session bleed-through between auth flows (#1795)
feedbackInfo was stored as a flat dict in $_SESSION['feedbackInfo'] and
merged with existing data on each write. This meant info collected
during one auth flow (e.g. which IdP was involved) could appear on error
pages in a completely separate flow.
Additionally, currentServiceProvider and currentIdentityProvider were
never cleared from the session after a successful login, so they would
show up on error pages for unrelated early errors.
The fix:
- feedbackInfo is now keyed per SAML request ID so each auth flow has
its own isolated bucket with no merging across flows
- clearFlowContext() is called by ProcessedAssertionConsumer after a
successful auth, clearing all flow context from the session
- All session access moved from raw $_SESSION to the Symfony session
- Session ops for feedbackInfo and flow context are centralised in a new
FeedbackStateHelper class, split out from ProcessingStateHelper
- FeedbackStateHelper is wired through DiContainerRuntime instead of the
legacy DiContainer
0 commit comments