2014-06-08 6 views
2

JWT 인증을 사용하는 웹 서비스를 만들고 있습니다. 나는 django-rest-framework-jwt 을 사용하고있다. 내 사용자가 자신의 LDAP 계정을 사용하여 인증 할 수있게하고 싶습니다. 나는 LDAP 서비스에 대해 인증하는 장고 인증 백엔드가 있음을 발견했다. 장고 - 나머지 프레임 워크 - JWT의 인증을 수행하는 기능은 다음과 같이 코딩 :JWT 인증을 사용하여 LDAP 서비스 인증

def authenticate_credentials(self, payload): 
    try: 
     user_id = payload.get('user_id') 

     if user_id: 
      user = User.objects.get(pk=user_id, is_active=True) 
     else: 
      msg = 'Invalid payload' 
      raise exceptions.AuthenticationFailed(msg) 
    except User.DoesNotExist: 
     msg = 'Invalid signature' 
     raise exceptions.AuthenticationFailed(msg) 

    return user 

기능은 사용자를 인증하기 위해 사용자 모델에서 찾습니다. 나는 ldap backend를 설정해도 작동하지 않을 것이라고 생각합니다. 내가 맞습니까? 그렇다면 JWT Auth를 사용할 수 있고 LDAP 서비스에 대해 인증 할 수있게 변경하려면 어떻게해야합니까?

답변

5

모든 Django 인증 백엔드는 very simple API입니다. 일반적으로, 그들은 AUTHENTICATION_BACKENDS 설정에 설치하고 있지만 아무것도 수동으로 사용에서 당신을 중지 없습니다 :이 사용자가 사용자 이름과 암호를 사용하여 인증하는 것을 가정한다

from django_auth_ldap.backend import LDAPBackend 

user = LDAPBackend().authenticate(username, password) 

. LDAP에 대해 다른 방법으로 인증해야하는 경우 사용자가 직접 처리해야합니다.

모든 인증 백엔드는 동일한 User 모델 객체를 만들거나 반환한다는 점을 기억해야합니다. 따라서 사용자가 한 번 인증되었다고 가정하면 위의 user_id 기반 코드는 기본 백엔드와 호환되어야합니다.