0

Django Rest Framework 애플리케이션에서 신호를 사용하여 타사 OpenID 인증을 사용하여 로그인하는 모든 사용자에 대해 토큰이 생성됩니다. 이제 데이터베이스에 직접 가서 토큰을 가져 와서이 토큰을 사용하여 authentication_classes = (TokenAuthentication,)의보기로 API 호출을 할 수 있습니다.Django Rest Framework 사회 인증 로그인을 사용한 토큰 인증

(OpenID) 로그인이 성공했을 때 어떻게 안전하게이 토큰을 사용자에게 제공 할 수 있습니까?

장고 나머지 프레임 워크는 같은 지원

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

을하지만,이 obtain_auth_token보기는 내 응용 프로그램의 경우와하지 않은, 사용자 이름과 암호를 취 후 요청을 지원합니다.

워크 플로우에 결함이 있으면 저를 교정하십시오.

+0

JWT와 같은 사운드를 원하십니까? – Thomas

답변

0

당신의 문제에 대한 해석은 꽤 논리적입니다.

의견에서 지적한대로 jwt를 사용하는 것이 하나의 옵션입니다. Json Web Token (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 토큰을 직접 변환하고 안전하게 변환합니다.

관련 문제