tutorial simple knox framework expiration auth django apache django-rest-framework mod-wsgi apache2.2

simple - django-rest-knox



El comportamiento de Django JWT Authentication es diferente entre los servidores locales y mod_wsgi con el marco Django REST (1)

Estoy intentando determinar por qué la autenticación de los recursos protegidos utilizando el encabezado Authorization: comporta correctamente cuando se utiliza un servidor de desarrollo local, pero no en la implementación desplegada de apache 2.2 w / mod_wsgi.

Estoy usando django 1.8 con django-rest-framework y django-rest-framework-jwt lib para la autenticación basada en JWT. El servidor apache es el 2.2 con mod_wsgi. Todo esto se ejecuta en una instancia de ubuntu 12.04 (python 2.7).

Caso de trabajo con manage.py runserver en localhost:

# manage.py runserver is running curl -s -X POST / -d ''{"username":"[email protected]", "password":}'' / http://localhost:8000/portfolio/login # Response as expected: ##> {"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp..."} # Using above token as $TOKEN_STR with JWT prefix for Auth header: curl -X GET -H "Content-Type: application/json" / -H "Authorization: $TOKEN_STR" / http://localhost:8000/portfolio # Response as expected ##> {"data":"[...]"}

Caja rota con apache2.2 mod_wsgi:

curl -s -X POST / -d ''{"username":"[email protected]", "password":}'' / http://myremote.com/django/portfolio/login # Response as expected: ##> {"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp..."} # Using above token as $TOKEN_STR with JWT prefix for Auth header: curl -X GET -H "Content-Type: application/json" / -H "Authorization: $TOKEN_STR" / http://myremote.com/django/portfolio # Response behaves as authentication not even there w/403 or 401: ##> {"detail": "Authentication credentials were not provided."}

Configuración del sitio Apache

#### DJANGO APP #### LogLevel info WSGIDaemonProcess dev processes=2 threads=15 WSGIProcessGroup dev WSGIScriptAlias /django /webapps/django/config/wsgi.py <Directory /webapps/django> Order allow,deny Allow from all </Directory> ### DJANGO APP ####

Configuraciones posiblemente relevantes

config.py

## Django rest frameowkr config REST_FRAMEWORK = { ''DEFAULT_PERMISSION_CLASSES'': ( ''rest_framework.permissions.IsAuthenticated'', ), ''DEFAULT_AUTHENTICATION_CLASSES'': ( ''rest_framework.authentication.SessionAuthentication'', ''rest_framework.authentication.BasicAuthentication'', ''rest_framework_jwt.authentication.JSONWebTokenAuthentication'', ) } JWT_AUTH = { ''JWT_ENCODE_HANDLER'': ''rest_framework_jwt.utils.jwt_encode_handler'', ''JWT_DECODE_HANDLER'': ''rest_framework_jwt.utils.jwt_decode_handler'', ''JWT_PAYLOAD_HANDLER'': ''rest_framework_jwt.utils.jwt_payload_handler'', ''JWT_PAYLOAD_GET_USER_ID_HANDLER'': ''rest_framework_jwt.utils.jwt_get_user_id_from_payload_handler'', ''JWT_RESPONSE_PAYLOAD_HANDLER'': ''rest_framework_jwt.utils.jwt_response_payload_handler'', ''JWT_SECRET_KEY'': SECRET_KEY, ''JWT_ALGORITHM'': ''HS256'', ''JWT_AUTH_HEADER_PREFIX'': ''JWT'', }


He encontrado un problema similar. Me doy cuenta de que estaba faltando debajo de la directiva en el archivo de configuración de Apache

WSGIPassAuthorization On