Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
授权凭证剥离---django、elastic beanstalk、oauth_Django_Amazon Web Services_Oauth 2.0_Amazon Elastic Beanstalk_Django Rest Framework - Fatal编程技术网

授权凭证剥离---django、elastic beanstalk、oauth

授权凭证剥离---django、elastic beanstalk、oauth,django,amazon-web-services,oauth-2.0,amazon-elastic-beanstalk,django-rest-framework,Django,Amazon Web Services,Oauth 2.0,Amazon Elastic Beanstalk,Django Rest Framework,我使用django REST框架在django中实现了一个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/acc

我使用django REST框架在django中实现了一个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/


我认为问题在于我在django或其他错误类型中的配置,而不是关注localhost和EB之间的差异。问题在于EB的Apache设置

WSGIPassAuthorization本机设置为OFF,因此必须将其打开。通过添加以下命令,可以在.ebextensions文件夹中的*.config文件中完成此操作:

container_commands:
  01_wsgipass:
    command: 'echo "WSGIPassAuthorization On" >> ../wsgi.conf'

请让我知道,如果我错过了什么,或者如果有更好的方式,我应该看看这个问题。我在网上的任何地方都找不到关于这一点的任何具体信息,我认为这可能会为某人节省数小时的故障排除时间,然后觉得自己很愚蠢。

我现在使用的方法略有不同。正如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解决方案。我没有亲自尝试过,但似乎是一个更干净的解决方案。这是一个对EBs脚本的黑客攻击,如果EB更新它们,特别是如果它们将它们移动到不同的位置,将来可能会崩溃。

尽管上述解决方案很有趣,但还有另一种方法。保留您要在.ebextensions中使用的wsgi.conf VirtualHost配置文件,并在部署后挂钩中覆盖它(您不能进行预部署,因为它将被重新生成(是的,我很难找到)。如果执行此操作,要重新启动,请确保使用supervisorctl程序重新启动,以便正确设置所有环境变量。(我也很难发现这一点。)

01_python.config:

05_fixwsgiauth:
    command: "cp .ebextensions/wsgi.conf /tmp"

我喜欢在标准位置上进行一些额外配置的想法。在.ebextensions目录中创建一个wsgi_custom.config文件,其中包含:

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

正如在这里发布的:

你是我的英雄。我在这方面浪费了很多时间,但我相信你救了我更多!你应该自己回答你的问题,这样它就不会出现在未回答的列表中:)我不知道这会占用我多少时间,但我很确定这会有一段时间。救生圈。在2020年,你仍然节省了我的时间。我不知道有多少天我真的熬夜了。哈非常感谢你。祝你度过愉快的一天,我真的爱你。在2020年7月仍然可以节省时间!!!!!!!!!!我在上面的评论中似乎说得太快了。虽然这对初始部署有效,但如果您在环境中更改了某些内容(例如,添加新变量),则在应用这些更改时不会运行此操作,而且wsgi.conf似乎仍会重新生成。假设您不知道每次发生更改时都会运行任何应用程序配置吗?我在每个git aws.push中都包含了这一点。但是,是的,当我更改参数时,有时会丢失css。如果在对环境进行更改后,您通过“环境-应用程序版本”菜单中的ui重新部署了最后一次推送,您的应用程序中会出现任何故障吗?看起来此修复程序已过时。Rubén DuráTarí的亚军答案是有效的(如果你纠正了拼写错误),而且从表面上看似乎更加有力。@skolsuper拼写错误是什么?@Nate没有。当我测试它时,我遇到了一个不相关的问题,我在“纠正”打字错误的同时无意中解决了这个问题。自从我的滑稽表演以来,鲁宾已经将他的答案编辑回工作状态。这很好。现在awsebcli有了eb ssh,我发现在开发操作上懒惰和手工清理更容易。仍然是相关的答案。想要添加这个(作为一个aws新手用户),您只需将commands标记添加到您的.ebextensions.config文件中,添加到您的container_命令之上,就可以了。关于这里处理的所有标记的更多信息:这有两个问题:1)仅适用于第二次和后续部署,2)每次部署时,sed都会在同一行上堆积到配置文件中。Manel Clos的解决方案(在Apache的conf.d中创建一个新文件)不会遇到这些问题,而且在更改环境变量时也能工作。我有一段时间没有使用EB了,但我同意他的解决方案更干净、更优雅。如果它能正常工作,我可能会使用它,这是应该的。你救了我的团队。谢谢!这是一个干净的解决方案。当您更改环境变量时,它确实起作用,并且不会在每次部署时都将同一行添加到配置文件中。获取此错误:
未授权执行:rds:DescribeDBEngineVersions
cp /tmp/wsgi.conf /etc/httpd/conf.d/wsgi.conf
 /usr/local/bin/supervisorctl -c /opt/python/etc/supervisord.conf restart httpd
exit 0
05_fixwsgiauth:
    command: "cp .ebextensions/wsgi.conf /tmp"
files:
  "/etc/httpd/conf.d/wsgihacks.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
      WSGIPassAuthorization On