使用社交身份验证登录的 Django Rest Framework 令牌身份验证
Django Rest Framework Token authentication with Social auth login
在我的 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
视图仅支持 post 需要用户名和密码的请求,我的应用程序不支持这种情况。
如果我的工作流程有任何缺陷,请指正。
你对问题的解释很合乎逻辑。
正如评论中指出的那样,使用 jwt 是一种选择。 Json Web 令牌 (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 令牌。
在我的 Django Rest Framework 应用程序中,使用信号为使用第三方 OpenID 身份验证登录的每个用户生成一个令牌。现在我可以使用此令牌(通过手动转到数据库并获取令牌)对具有 authentication_classes = (TokenAuthentication,)
.
谁能解释一下当 (OpenID) 登录成功时如何安全地向用户提供此令牌。
Django Rest Framework 支持如下内容:
from rest_framework.authtoken import views
urlpatterns += [
url(r'^api-token-auth/', views.obtain_auth_token)
]
但是,此 obtain_auth_token
视图仅支持 post 需要用户名和密码的请求,我的应用程序不支持这种情况。
如果我的工作流程有任何缺陷,请指正。
你对问题的解释很合乎逻辑。
正如评论中指出的那样,使用 jwt 是一种选择。 Json Web 令牌 (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 令牌。