使用Django REST框架的本地和mod_wsgi服务器之间的Django JWT身份验证行为不同

cerd

我试图确定为什么Authorization:在使用本地开发服务器时而不是在我部署的apache 2.2 w / mod_wsgi实现上使用标头对受保护资源进行身份验证时,行为正常。

我正在使用django 1.8django-rest-frameworkdjango-rest-framework-jwtlib用于基于JWT的身份验证。apache服务器是带有mod_wsgi的2.2版。这些都在ubuntu 12.04实例(python 2.7)上运行。

本地主机上manage.py runserver的工作情况:

# 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":"[...]"}

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."}

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 ####

可能相关的配置

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',
}
卢卡斯·迪诺夫斯基(Lukasz Dynowski)

我遇到类似的问题。我发现我在Apache配置文件中缺少以下指令

WSGIPassAuthorization On

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我应该在Django Rest Framework中使用JWT还是基本令牌身份验证?

使用Spring和JWT进行基于令牌的身份验证

如何使用REST Framework JWT测试身份验证?

使用Postman和JWT的JHipster身份验证

如何添加身份验证中间件JWT Django?

django rest框架与jwt进行社交身份验证

使用Spring Boot进行JWT身份验证和授权

使用Django REST框架进行JWT身份验证

使用Django Rest Framework,JWT和Vuejs获取经过身份验证的用户信息

django-rest-framework中的JWT身份验证问题

Django Rest Framework自定义JWT身份验证

跨多个微服务使用JWT身份验证

在动作和控制器中使用不同身份验证方案的Authorize属性的行为是什么

Django Rest Framework避免身份验证JWT

使用JWT身份验证多重服务的Micronaut测试

如何在graphene-django GraphQLTestCase中使用django-grahql-jwt进行身份验证?

在Django Rest框架中处理JWT身份验证和软删除用户

Django身份验证-成功和失败导致相同的行为

Django针对不同URL的不同身份验证

在Django REST框架的ModelViewSet中对不同的操作使用不同的身份验证

django身份验证可以与django rest框架基本身份验证结合使用吗?

使用JWT,CakePHP 3和AngularJS进行身份验证的奇怪行为

如何在Django rest框架ViewSet中对不同的功能使用不同的身份验证

如何在基于类的视图中使用 django REST JWT 授权和身份验证

使 django rest 框架 jwt 身份验证工作 [django rest,angular 5]

Django Rest Framework JWT 未提供身份验证凭据

Django Rest 框架 JWT 身份验证

使用 symfony 身份验证器和 lexik jwt 身份验证

如何对静态服务内容使用 jwt 身份验证?