我正在使用Pyhton 2.7.15开发用于Windows的Django应用程序。我需要实现一种身份验证机制,如果用户具有特定的JWT令牌,则他可以浏览该应用程序(换句话说,我只需要验证该令牌而不生成它)。令牌非常简单,也许会是这样:
标题
{
"alg": "HS256",
"typ": "JWT"
}
有效载荷
{
"iss": "customIssuer"
}
签名
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret
)
要实施验证服务,我安装了Rest framework JWT工具,并通过以下方式修改了setting.py
:
...
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
'rest_framework.authentication.TokenAuthentication'
),
}
JWT_AUTH = {
'JWT_ISSUER': 'customIssuer'
}
...
然后我修改了urls.py
:
...
from rest_framework_jwt.views import verify_jwt_token
urlpatterns = [
...
url(r'^api-token-verify/', verify_jwt_token),
...
]
最后,我尝试使用邮递员发送带有上述令牌的POST请求,但此正文出现400 Bad Error
错误:
{
"non_field_errors": [
"Invalid payload."
]
}
调查我意识到必须在有效负载中添加用户名声明的原因,但我不想这样做。是否可以将应用程序配置为忽略该声明?