Ошибка "недопустимого клиента" django-oauth-toolkit после развертывания на AWS Elasticbeanstalk
Я использую django-oauth-toolkit с моим приложением django/django-rest-framework. Когда я запрашиваю токен доступа в режиме разработки на localhost, он работает нормально:
dev@devComp:$ curl -X POST -d "grant_type=password&username=
<user_name>&password=<password>" -u"<client_id>:<client_secret>"
http://localhost:8000/o/token/
{"access_token": "fFySxhVjOroIJkD0IuEXr5WIhwdXg6", "expires_in":
36000, "token_type": "Bearer", "scope": "read write groups",
"refresh_token": "14vhyaCZbdLtu7sq8gTcFpm3ro9YxH"}
Но если я запрашиваю токен доступа из абсолютно того же приложения, развернутого на AWS Elasticbeanstalk, я получаю ошибку "недопустимый клиент":
dev@devComp:$ curl -X POST -d "grant_type=password&username=
<user_name>&password=<password>" -u"<client_id>:<client_secret>"
http://my-eb-prefix.us-west-1.elasticbeanstalk.com/o/token/
{"error": "invalid_client"}
Посоветуйте, пожалуйста, что делать, чтобы избавиться от этой ошибки, и обычно запрашивайте токены доступа из приложения django, развернутого на AWS.
1 ответ
После некоторого исследования я теперь могу дать ответ сам:
Я должен был добавить еще одну команду к моему python.config
в .ebextensions
папка:
...
container_commands:
...
03wsgipass:
command: 'echo "WSGIPassAuthorization On" >> ../wsgi.conf'
После этого AWS позволяет входящим запросам проходить авторизацию, и я получаю ответ без ошибок.
Я также столкнулся с той же проблемой. Это сработало для меня:
curl -X POST -d "grant_type=password&username=<your-username>&password=<your-password>&client_id=<your-client id>&client_secret=<your-client secret>" http://your-domain/o/token/
{"access_token": "0BVfgujhdglxC7OHFh0we7gprlfr1Xk", "scope": "read write", "token_type": "Bearer", "expires_in": 36000, "refresh_token": "AwffMPzNXvghlkjhs8dpXk7gbhhjhljlldfE2nI"}