使用Social auth登录的Django Rest Framework令牌认证

时间:2017-10-13 03:17:11

标签: python django authentication django-rest-framework auth-token

在我的Django Rest Framework应用程序中,使用信号为使用第三方OpenID身份验证登录的每个用户生成令牌。现在我可以使用此令牌(通过手动转到数据库并获取令牌)来对具有authentication_classes = (TokenAuthentication,)的视图进行API调用。

有人可以解释一下,当(OpenID)登录成功时,如何安全地向用户提供此令牌。

Django Rest Framework支持以下内容:

from rest_framework.authtoken import views
urlpatterns += [
    url(r'^api-token-auth/', views.obtain_auth_token)
]

但是,这个obtain_auth_token视图仅支持使用用户名和密码的帖子请求,而我的应用程序则不然。

如果我的工作流程存在任何缺陷,请纠正我。

1 个答案:

答案 0 :(得分:0)

您对问题的解释非常符合逻辑。

正如评论中所指出的,使用jwt是一种选择。 Json Web Tokens(JWT)会将信息转换为指定的编码,然后您可以解码令牌值以进一步请求。

import jwt
encoded = jwt.encode(
    {
        'open_id_token': '<open_id_token_value>'
    },
    '<some_random_secret>',
    algorithm='HS256'
)
print encoded

decoded = jwt.decode(encoded)
print decoded
> {'open_id_token': '<open_id_token_value>'}

此选项直接使用库并安全地转换您可以与用户共享的OpenID令牌。