Проверка подлинности токена 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, которым вы можете поделиться с вашим пользователем.

Другие вопросы по тегам