当我尝试通过
进行授权时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。
答案 0 :(得分:5)
我很惭愧地说我将请求发送到错误的网址,我应该将其发送到http://localhost:8000/oauth2/token/
curl -X POST -d "grant_type=password&username=myusername&password=mypassword&client_id=myclientid" http://localhost:8000/oauth2/token/
答案 1 :(得分:0)
您需要在POST数据中添加csrf令牌。
答案 2 :(得分:0)
阅读关于内置Cross Site Request Forgery protection的Django的文档可能是值得的。
Django视图的任何帖子都需要csrfmiddlewaretoken
设置,否则你将获得403.你需要包含它,或者来自CSRF保护的exempt your view(更喜欢前一种方法)如果可能的话。)