2014-01-30 6 views
1

Когда я пытаюсь разрешить поCSRF не удалось выполнить проверку на разрешение

curl -X POST -d "grant_type=password&username=myusername&password=mypassword" http://localhost:8000/oauth2/authorize/ 

Я получаю 403 запрещено: проверка CSRF не удалось. Запрос прерван. Я не могу понять, почему любая помощь будет оценена по достоинству.

Кстати, я использую Django OAuth Toolkit для аутентификации.

Редактировать: Я знаю о защите CSRF и о том, как использовать его в представлении и формах django, я использую пакет под названием Django OAuth Toolkit для авторизации oauth 2, который не должен запрашивать токен csrf. Существует небольшая информация here о том, чего я добиваюсь.

ответ

5

Мне стыдно сказать, что я отправлял запрос на неправильный URL, я должен был отправить его в http://localhost:8000/oauth2/token/

curl -X POST -d "grant_type=password&username=myusername&password=mypassword&client_id=myclientid" http://localhost:8000/oauth2/token/ 
+0

То же самое точно произошло со мной. Спасибо за документирование решения. –

+0

Спасибо! Мой был еще более тонким, чем это. Конечная косая черта на URL-адресе имеет жизненно важное значение при использовании curl для обновления токена - вы получаете ошибку проверки csrf без нее. – danj1974

0

Вам нужно добавить токен csrf в свои данные POST.

https://docs.djangoproject.com/en/dev/ref/contrib/csrf/

+1

Я знаю о защите CSRF и как использовать его в целях Джанго и форм, я используя пакет под названием Django OAuth Toolkit для авторизации oauth 2, который не должен запрашивать токен csrf. – neelix

+0

Возможно, это не работает с localhost –

0

Это, вероятно, стоит вашего времени, читая документацию на Джанго, построенную в Cross Site Request Forgery protection.

Любое сообщение в представлении Django будет нуждаться в csrfmiddlewaretoken, иначе вы получите 403. Вам нужно будет либо включить его, либо exempt your view из CSRF-защиты (предпочитайте, по возможности, прежний подход).

+3

Я знаю о защите CSRF и о том, как использовать его в представлении и формах django, я использую пакет под названием Django OAuth Toolkit для авторизации oauth 2, который не должен запрашивать токен csrf. – neelix

Смежные вопросы