Odoo 連線ldap 域認證

上官飞鸿發表於2024-11-05

附一個驗證ldap的python程式碼。

import socket
from ldap3 import Server, Connection, ALL

def is_port_open(host, port):
    """
    檢查遠端主機的指定埠是否開放
    :param host: 遠端主機地址
    :param port: 要檢查的埠號
    :return: 埠開放返回True,否則返回False
    """
    try:
        with socket.create_connection((host, port), timeout=5) as sock:
            return True
    except (socket.timeout, ConnectionRefusedError):
        return False


def test_ldap_service(host, port, user, password):
    """
    使用ldap3庫驗證LDAP服務是否正常
    :param host: LDAP伺服器地址
    :param port: LDAP伺服器埠
    :param user: 使用者名稱
    :param password: 密碼
    :return: 驗證成功返回True,否則返回False
    """
    try:
        server = Server(host, port=port, get_info=ALL)
        conn = Connection(server, user=user, password=password, auto_bind=False)
        
        # 嘗試手動繫結
        if conn.bind():
            print("LDAP服務驗證成功")
            return True
        else:
            print(f"LDAP服務驗證失敗: {conn.result}")
            return False
    except Exception as e:
        print(f"LDAP服務驗證失敗: {e}")
        return False

if __name__ == "__main__":
    ldap_host = "192.168.2.51"
    ldap_port = 389

    ldap_user = "cn=odooadmin,ou=LdapUsers,dc=wywr,dc=top"
    ldap_password = "***"

    # ldap_user = "cn=administrator,cn=users,dc=wywr,dc=top"
    # ldap_password = "***"


    # 檢查埠是否開放
    if is_port_open(ldap_host, ldap_port):
        print(f"LDAP埠 {ldap_port} 開放")
        # 驗證LDAP服務
        if test_ldap_service(ldap_host, ldap_port, ldap_user, ldap_password):
            print("LDAP服務正常")
        else:
            print("LDAP服務異常")
    else:
        print(f"LDAP埠 {ldap_port} 未開放")

注意:

公司是選的,不是建的

模板使用者也是選的,如果沒有模板使用者,要新建。

相關文章