Skip to content

Commit 21c19e3

Browse files
authored
fix(oauth): Preserve session payload across cycle_key() in authorize flow
1 parent 38f6946 commit 21c19e3

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

src/sentry/web/frontend/oauth_authorize.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -339,12 +339,17 @@ def _logged_out_post(
339339
response = super().post(request, application=application, **kwargs)
340340
# once they login, bind their user ID
341341
if request.user.is_authenticated:
342+
# Save OAuth payload before session regeneration
343+
oa2_payload = request.session.get("oa2")
344+
342345
# Regenerate session to prevent session fixation attacks
343346
request.session.cycle_key()
344347

345-
# Update OAuth payload with authenticated user ID for validation in post()
346-
request.session["oa2"]["uid"] = request.user.id
347-
request.session.modified = True
348+
# Restore OAuth payload after session regeneration and update user ID
349+
if oa2_payload is not None:
350+
oa2_payload["uid"] = request.user.id
351+
request.session["oa2"] = oa2_payload
352+
request.session.modified = True
348353
return response
349354

350355
def post(self, request: HttpRequest, **kwargs) -> HttpResponseBase:

0 commit comments

Comments
 (0)