Поток аутентификации Auth0 (несоответствующее состояние)
Надеюсь, у того, кто это читает, будет хороший день!
Мой вопрос заключается в следующем, у меня есть определенный поток аутентификации, который вызывает исключение при его выполнении.
Учитывая, что FrontEnd размещен на домене FE (React Client), backEnd на домене BE (DJango Server) и Auth0 на A0.
Мне нужно, чтобы пользователь перешел на FE, был перенаправлен на форму входа в A0 с помощью конечной точки BE, снова был перенаправлен на FE, который, в свою очередь, вызывает BE с состоянием и кодом аутентификации, полученным от A0, аутентифицируется и сохраняет токен в сессии запроса.
def callback(request):
'''
Extracts state and auth code from url, authenticates with auth0,
extracts token and saves it within the request session for future
calls.
'''
token = oauth.auth0.authorize_access_token(request)
request.session["user"] = token
return {"Authenticated":True}
def login(request):
'''
Redirect to auth0 login screen with a callback url to frontend
that extracts the given state and auth code sent by both BE and Auth0
'''
return oauth.auth0.authorize_redirect(
request, "http://FrontEnd.com/authenticate")
При этом бэкенд получает состояние и выдает ошибку Mismatching state request and response states not matching (state is null)
Почему я хочу это сделать? Потому что у меня несколько микросервисов, и я не хочу создавать несколько конечных точек API для каждого перенаправления FrontEnd после аутентификации.
Правильный документированный поток: Login screen из A0 получает конечную точку BE как callback url, который в свою очередь отправляет состояние и auth код на этот callback url в BE напрямую, аутентифицируется с A0 и перенаправляет на FE (статически набранный в BE).
Теория, почему это может происходить, заключается в том, что я получаю cookie (sessionId) от BE при перенаправлении на экран входа Auth0, который связан с доменом FE, а затем, когда FE пытается вызвать конечную точку BE, он не отправляет это cookie на домен BE, поскольку это не cross origin cookie.