python - 使用 JWT Auth 对 LDAP 服务进行身份验证

标签 python django authentication ldap jwt

我正在创建一个使用 JWT Auth 的网络服务。我正在使用 django-rest-framework-jwt 为了那个原因。我希望我的用户可以使用他们的 ldap 帐户进行身份验证。我发现有一个针对 LDAP 服务进行身份验证的 Django 身份验证后端。 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 Auth 并能够针对 LDAP 服务进行身份验证?

最佳答案

每个 Django 身份验证后端都有一个 very simple API .通常,它们安装在 AUTHENTICATION_BACKENDS 设置中,但没有什么可以阻止您手动使用它们:

from django_auth_ldap.backend import LDAPBackend

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

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

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

关于python - 使用 JWT Auth 对 LDAP 服务进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24104406/

相关文章:

python - Numpy issubdtype 给出 "TypeError: data type not understood"

python - 在 python 中初始化类但具有不同的父类

python - 如何将FirefoxWebElememt转换为字符串类型?

django - 让 Django REST framework 和 Django Channels 玩得很好

AJAX POST 请求隐藏基本身份验证凭据

php - ionauth 登录最大尝试次数实现

python - 如何查询Python事件循环单调时钟分辨率

python - Django-allauth - OpenID 和 OAuth 重定向 + Apache 作为代理

python - Django NoReverseMatch : trying to get slug in a template

c++ - 如何从另一个登录用户启动登录用户内部的应用程序?