小编典典

授权凭证已剥离-django,弹性beantalk,oauth

django

我在django中使用django-rest-framework实现了REST api,并使用oauth2进行身份验证。

我测试了:

curl -X POST -d "client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=password&username=YOUR_USERNAME&password=YOUR_PASSWORD" http://localhost:8000/oauth2/access_token/

curl -H "Authorization: Bearer <your-access-token>" http://localhost:8000/api/

在本地主机上,成功结果与文档一致。

将其推送到现有的AWS Elastic beantalk实例时,我收到了:

{ "detail" : "Authentication credentials were not provided." }

阅读 380

收藏
2020-04-01

共2个答案

小编典典

我现在使用略有不同的方法。只要汤姆·迪金(Tom dickin)指出不改变环境变量,sahutchi的解决方案就可以工作。我在EB内部进行了更深入的挖掘,发现了wsgi.conf模板的位置,并在其中添加了“ WSGIPassAuthorization On”选项。

commands:
  WSGIPassAuthorization:
    command: sed -i.bak '/WSGIScriptAlias/ a WSGIPassAuthorization On' config.py
    cwd: /opt/elasticbeanstalk/hooks

即使更改环境变量,这也将始终有效。希望对你有帮助。

编辑:似乎仍有很多人在回应这个问题。我已经有一段时间没有使用ElasticBeanstalk了,但是我会在下面考虑使用Manel Clos的解决方案。我还没有亲自尝试过,但是似乎是一个更干净的解决方案。从字面上看,这是对EB脚本的黑客攻击,并且如果EB更新它们,特别是在将它们移动到其他位置的情况下,将来可能会中断。

2020-04-01
小编典典

我喜欢在标准位置进行一些额外配置的想法。在你的.ebextensions目录中,创建具有以下内容的wsgi_custom.config文件:

files:
  "/etc/httpd/conf.d/wsgihacks.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
      WSGIPassAuthorization On
2020-04-01