Проверка подлинности токена Django Rest Framework с авторизацией в социальной сети
В моем приложении Django Rest Framework токен создается для каждого пользователя, который входит в систему, используя стороннюю аутентификацию OpenID, используя сигналы. Теперь я могу использовать этот токен (вручную перейдя в базу данных и взяв токен), чтобы сделать вызовы API для представления, которые имеют 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
view поддерживает только почтовый запрос, который принимает имя пользователя и пароль, что не относится к моему приложению.
Пожалуйста, исправьте меня, если в моем рабочем процессе есть недостатки.
1 ответ
Ваша интерпретация проблемы довольно логична.
Как указано в комментариях, использование 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, которым вы можете поделиться с вашим пользователем.