Django authlib MismatchingStateError для authorize_access_token - PullRequest
0 голосов
/ 03 марта 2020

У меня проблема с django клиентом authlib https://docs.authlib.org/en/latest/client/django.html. При перенаправлении url authorize_access_token Повышение Повышение MismatchingStateError ().

Это мой код:

def login(request):
    # google = oauth.create_client('google')

    authservice = oauth.create_client('authservice')
    redirect_uri = 'http://localhost:8050/authorize'

    authservice.save_authorize_data(request)

    return authservice.authorize_redirect(request, redirect_uri)


def authorize(request):
    token = oauth.authservice.authorize_access_token(request)
    userinfo = oauth.authservice.parse_id_token(request, token)
    resp = oauth.authservice.userinfo(token=token)
    return JsonResponse(token, safe=False)

И трассировка стека:

Internal Server Error: /authorize/
app_1  | Traceback (most recent call last):
app_1  |   File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
app_1  |     response = get_response(request)
app_1  |   File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
app_1  |     response = self.process_exception_by_middleware(e, request)
app_1  |   File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
app_1  |     response = wrapped_callback(request, *callback_args, **callback_kwargs)
app_1  |   File "/opt/project/access/views.py", line 141, in authorize
app_1  |     token = oauth.authservice.authorize_access_token(request)
app_1  |   File "/usr/local/lib/python3.7/site-packages/authlib/integrations/django_client/integration.py", line 66, in authorize_access_token
app_1  |     params = self.retrieve_access_token_params(request)
app_1  |   File "/usr/local/lib/python3.7/site-packages/authlib/integrations/base_client/base_app.py", line 144, in retrieve_access_token_params
app_1  |     params = self._retrieve_oauth2_access_token_params(request, params)
app_1  |   File "/usr/local/lib/python3.7/site-packages/authlib/integrations/base_client/base_app.py", line 126, in _retrieve_oauth2_access_token_params
app_1  |     raise MismatchingStateError()
app_1  | authlib.integrations.base_client.errors.MismatchingStateError: mismatching_state: CSRF Warning! State not equal in request and response.

Если у кого-то есть идея как это исправить, будет здорово.

Спасибо, ребята :)

1 Ответ

0 голосов
/ 03 марта 2020

Я полагаю, что ошибка может произойти, поскольку URL-адрес, настроенный в вашем приложении, не совпадает с 'http://localhost:8050/authorize'

Проверьте и убедитесь, что они совпадают или нет. Также см. это .

...