Django身份验证,带LDAP支持的基本身份验证,无用户模型
这是我的第一个Django项目,所以请容忍我。我正在创建一个纯DRF项目 我的要求是,用户将调用RESTAPI,同时以基本身份验证格式发送用户凭据,我需要对LDAP服务器进行验证 此外,每个API都会发送凭据,因此我不需要将凭据存储在我的终端(默认用户模型中) 我的目标是使用: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
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',
]