Django身份验证,带LDAP支持的基本身份验证,无用户模型

Django身份验证,带LDAP支持的基本身份验证,无用户模型,django,django-rest-framework,ldap,Django,Django Rest Framework,Ldap,这是我的第一个Django项目,所以请容忍我。我正在创建一个纯DRF项目 我的要求是,用户将调用RESTAPI,同时以基本身份验证格式发送用户凭据,我需要对LDAP服务器进行验证 此外,每个API都会发送凭据,因此我不需要将凭据存储在我的终端(默认用户模型中) 我的目标是使用: REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.BasicAuthent

这是我的第一个Django项目,所以请容忍我。我正在创建一个纯DRF项目

我的要求是,用户将调用RESTAPI,同时以基本身份验证格式发送用户凭据,我需要对LDAP服务器进行验证

此外,每个API都会发送凭据,因此我不需要将凭据存储在我的终端(默认用户模型中)

我的目标是使用:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.BasicAuthentication',
    )
} and 
INSTALLED_APPS = [
    'django.contrib.auth',
}
为了能够阅读基本的认证证书,然后希望能够加入:

AUTHENTICATION_BACKENDS = [
    'django_auth_ldap.backend.LDAPBackend',
] 
在LDAP服务器上对用户进行身份验证

问题:

--有没有更好的办法

--由于我只是将凭据传递给LDAP服务器,以了解凭据是否有效,所以我不需要数据库中的用户表。我只需要为对象建模。我怎样才能做到这一点?代理模型会有帮助吗?我们可以有一个抽象模型作为AUTH\u USER\u模型吗?
或者使用远程用户身份验证后端是更好的选择?

要简短回答,可以创建一个类来替换用户模型,如下所示:

class User(object):
    def __init__(self, authenticated=False, email=None):
        self.is_authenticated = authenticated
        self.email = email
真正的问题是如何让您的身份验证中间件在您的
请求中返回它。有多种方法(我从未使用过django auth ldap
,因此可能我没有为此编写最佳实践):

一种解决方案可以是:

是从此类继承的
django\u auth\u ldap.backend.LDAPBackend

然后您需要
身份验证\u后端

AUTHENTICATION_BACKENDS = [
    'path.to.CustomLDAP',
] 
我不确定您是否需要此
默认\u身份验证\u类
如果您使用的是
django auth ldap
。可能是这个 也有帮助

先读这篇


我想他们在这里也解释得很好。因此,解决方案可能在于包本身

django_auth_ldap.backend.LDAPBackend
是来自特定的包还是您的自定义后端?@AhmedHosny:是的:那么您的意思是绑定用户,是将此设置
auth_ldap_BIND_用作此处提到的用户身份验证吗?否,我的意思是,每当我们使用contrib.auth时,都会有一个与之关联的用户模型。此模型映射到数据库表。我不需要这个数据库表。我想要我在DRF中获得的基本身份验证信息,我可以将其传递到LDAP库。
AUTHENTICATION_BACKENDS = [
    'path.to.CustomLDAP',
]