Odoo 连接ldap 域认证
附一个验证ldap的python代码。
from ldap3 import Server, Connection, ALL, NTLM, SUBTREE, Tls from ldap3.core.exceptions import LDAPExceptionError class CompanyLDAP: def __init__(self, ldap_server, ldap_server_port, ldap_binddn, ldap_password, ldap_base, ldap_filter, ldap_tls): self.ldap_server = ldap_server self.ldap_server_port = ldap_server_port self.ldap_binddn = ldap_binddn self.ldap_password = ldap_password self.ldap_base = ldap_base self.ldap_filter = ldap_filter self.ldap_tls = ldap_tls def _connect(self): try: server = Server(self.ldap_server, port=self.ldap_server_port, use_ssl=self.ldap_tls, get_info=ALL) conn = Connection(server, user=self.ldap_binddn, password=self.ldap_password, auto_bind=True) print('Successfully connected to LDAP server.') return conn except LDAPBindError as e: print('LDAP bind failed: %s', e) except LDAPSocketOpenError as e: print('Failed to open socket to LDAP server: %s', e) except LDAPException as e: print('An LDAP exception occurred: %s', e) except Exception as e: print('An unexpected error occurred: %s', e) return None def _authenticate(self, login, password): if not password: return False conn = self._connect() if not conn: return False search_filter = self.ldap_filter % login conn.search(self.ldap_base, search_filter, search_scope=SUBTREE, attributes=['cn']) if len(conn.entries) != 1: return False user_dn = conn.entries[0].entry_dn try: user_conn = Connection(conn.server, user=user_dn, password=password, auto_bind=True) user_conn.unbind() return True except LDAPExceptionError: return False # Example usage # LDAP连接参数 ldap_config = CompanyLDAP( ldap_server='192.168.2.51', ldap_server_port=389, ldap_binddn='cn=odooadmin,ou=LdapUsers,dc=wywr,dc=top', ldap_password='12345678', ldap_base='dc=wywr,dc=top', ldap_filter='(&(objectCategory=person)(objectClass=user)(sAMAccountName=%s))', ldap_tls=False ) # 验证LDAP连接,账号密码 is_authenticated = ldap_config._authenticate('jackadam', '12345678') print("Authenticated:", is_authenticated)
注意:
公司是选的,不是建的
模板用户也是选的,如果没有模板用户,要新建。
官方说明
LDAP 身份验证
要在 Odoo 中配置 LDAP 身份验证:
-
打开“设置”应用程序,向下滚动到“集成”部分,然后启用 LDAP 身份验证。
-
单击 Save,然后返回 Integrations 部分并单击 LDAP Server。
-
在 Set up your LDAP Server 列表中,单击 New (新建),然后选择所需的 company 在下拉列表中。
-
在 Server information (服务器信息) 部分中,分别在 LDAP 服务器地址 和 LDAP 服务器端口 字段中输入服务器的 IP 地址和端口。
-
启用 使用 TLS 以在连接到 LDAP 时请求安全的 TLS/SSL 加密 server,前提是服务器启用了 StartTLS。
-
在 Login information (登录信息) 部分中,输入用于 在 LDAP binddn 和 LDAP password 字段中查询服务器, 分别。如果字段留空,服务器将匿名执行查询。
-
在 Process parameter (流程参数) 部分中,输入:
-
LDAP 基字段中使用 LDAP 格式的 LDAP 服务器名称 (例如,
dc=example,dc=com
); -
uid=%s
在 LDAP 过滤器字段中。
-
-
在 User information (用户信息) 部分中:
-
启用 创建用户 ,以便在有人首次登录时在 Odoo 中创建用户配置文件 使用 LDAP;
-
选择 User 模板,用于创建新用户配置文件。如果没有模板 ,则使用管理员的配置文件。
-
注解
使用 Microsoft Active Directory (AD) 进行 LDAP 身份验证时,如果用户遇到登录 问题 尽管使用了有效的凭据,但请创建新的系统参数以禁用引荐追踪 在 LDAP 客户端中:
转到
填写字段:
键:
auth_ldap.disable_chase_ref
值:
True
数据库:
表: ir.config_parameter
key: auth_ldap.disable_chase_ref
值: True