Django Rest Framework令牌身份验证与社交身份验证登录
问题描述:
在我的Django Rest Framework应用程序中,使用信号使用第三方OpenID身份验证登录的每个用户都会生成一个令牌。现在我可以使用此令牌(通过手动前往数据库并获取令牌)对具有authentication_classes = (TokenAuthentication,)
的视图进行API调用。Django Rest Framework令牌身份验证与社交身份验证登录
有人可以解释我如何在(OpenID)登录成功时向用户安全地提供此令牌。
Django的REST框架支持类似:
from rest_framework.authtoken import views
urlpatterns += [
url(r'^api-token-auth/', views.obtain_auth_token)
]
但是,这obtain_auth_token
观点仅支持POST请求这需要用户名和密码,这是不符合我的应用程序的情况。
如果我的工作流程中有任何缺陷,请纠正我的错误。
答
您对问题的解释非常合理。
正如评论中指出的那样,使用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令牌。
听起来像JWT是你在找什么? – Thomas