Поток аутентификации 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.

Вернуться на верх