带TLS的Django LDAP3安全性:我安全吗?

问题描述 投票:1回答:1

我担心我的Django应用中的LDAP登录不安全。在尝试了几种方法之后,我可以使用ldap3获得可工作的自定义后端。我组织中的其他程序员(不幸的是非Django程序员)建议我使用TLS,但是当我与ldap3建立连接时,好像没有在使用TLS。我是LDAP和安全性的新手,但我已尝试做尽可能多的阅读,因此希望我不会遗漏明显的内容。

基于ldap3文档,并且反复试验,似乎必须先绑定(conn.bind()),然后才能启动TLS(conn.start_tls())。这是真的?如果连接没有TLS,这是否暴露出漏洞?如果是这样,连接后启动TLS的意义何在?

我正确使用ldap3和TLS吗?这种登录方法是否不安全,并且会暴露密码?

#backends.py

import ldap3
import ssl

class LDAPBackend(ModelBackend):
    def authenticate(self, request, username=None, password=None):
        server = ldap3.Server('ldap://<url>', use_ssl=True)
        conn = ldap3.Connection(server, user=request.POST.get('username'), password=request.POST.get('password'))

        try:
            conn.bind()
            conn.start_tls()
            search_filter = '(&(objectClass=user)(userPrincipalName='+request.POST.get('username')+'))'
            conn.search(search_base='<search terms>', search_filter=search_filter, search_scope='SUBTREE', attributes='*')
            attrs = conn.response[0]['attributes']
            username = attrs['userPrincipalName']

        except:
            return None

如果我切换conn.bind()conn.start_tls()的顺序(所以TLS首先启动),则登录失败(该表格显示“输入正确的用户名...”。]]

在Django应用中以这种方式登录是否安全?

我担心我的Django应用中的LDAP登录不安全。在尝试了几种方法之后,我能够使用ldap3获得可工作的自定义后端。我被其他程序员建议(...

python django security ldap ldap3
1个回答
0
投票

我们使用LDAP证书通过LDAP与我们组织中的旗舰Django网站进行LDAP身份验证。由于您的目标网址似乎是ldap://而不是ldaps://,因此您不确定自己是否是。通常,非安全LDAP在端口389上运行,而安全LDAPS在端口636上运行。

© www.soinside.com 2019 - 2024. All rights reserved.