1. ホーム
  2. django

[解決済み] 認証情報を削除する --- django, elastic beanstalk, oauth

2023-07-24 12:58:04

質問

django-rest-frameworkを使って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/

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

をローカルホストで実行し、ドキュメントと一致する結果を得ました。

これを既存のAWS elastic beanstalkインスタンスにプッシュアップすると、次のような結果が得られました。

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

どのように解決するのですか?

sahutchiの解決策は、Tom dickinが指摘したように、環境変数が変更されない限り、うまくいきました。私は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がスクリプトを更新した場合、特に別の場所に移動した場合、壊れる可能性があります。