使用JWT Auth进行LDAP服务验证

我正在创建一个使用JWT身份验证的Web服务。 我为此使用了django-rest-framework-jwt。 我希望我的用户可以使用他们的LDAP帐户进行身份验证。 我发现有一个Django身份验证后端根据LDAP服务进行身份验证。 在django-rest-framework-jwt中进行身份验证的函数编码如下:

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后端,它也不会工作。 我对吗? 如果是,我可以更改哪些内容以便能够使用JWT身份验证并能够使用LDAP服务进行身份验证?


每个Django身份验证后端都有一个非常简单的API。 通常,它们安装在AUTHENTICATION_BACKENDS设置中,但没有任何阻止您手动使用它们:

from django_auth_ldap.backend import LDAPBackend

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

这假设用户正在使用用户名和密码进行身份验证。 如果您需要通过其他方式对LDAP进行身份验证,那么您可能是靠自己的。

需要记住的一件事是,每个身份验证后端都将创建/返回相同的用户模型对象。 因此,假设用户已经过身份验证一次,您上面的基于user_id的代码应该与任何底层后端兼容。

链接地址: http://www.djcxy.com/p/33693.html

上一篇: Use JWT Auth for authenticate against LDAP service

下一篇: Can django handle multiple users with the same username?