Skip to content

Commit 3a63ba1

Browse files
committed
check_xsrf_cookie after authentication
now that get_user is async, we have to re-run the check in prepare
1 parent 9db0bac commit 3a63ba1

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

jupyter_server/base/handlers.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,9 @@ def check_referer(self):
506506

507507
def check_xsrf_cookie(self):
508508
"""Bypass xsrf cookie checks when token-authenticated"""
509+
if not hasattr(self, "_jupyter_user"):
510+
# Called too early, will be checked later
511+
return
509512
if self.token_authenticated or self.settings.get("disable_check_xsrf", False):
510513
# Token-authenticated requests do not need additional XSRF-check
511514
# Servers without authentication are vulnerable to XSRF
@@ -593,8 +596,11 @@ async def prepare(self):
593596

594597
# self.current_user for tornado's @web.authenticated
595598
# self._jupyter_user for backward-compat in deprecated get_current_user calls
599+
# and our own private checks for whether .current_user has been set
596600
self.current_user = self._jupyter_user = user
601+
# complete initial steps which require auth to resolve first:
597602
self.set_cors_headers()
603+
self.check_xsrf_cookie()
598604
return super().prepare()
599605

600606
# ---------------------------------------------------------------

0 commit comments

Comments
 (0)