Xác thực LDAP/Active Directory

Tích hợp Odoo với hệ thống quản lý người dùng tập trung LDAP/Active Directory

LDAP
Active Directory
OpenLDAP
FreeIPA
SSO
TLS

Tổng quan

Module auth_ldap cho phép người dùng đăng nhập Odoo bằng tài khoản LDAP/Active Directory thay vì mật khẩu Odoo riêng, giúp quản lý tập trung và đồng bộ mật khẩu.

Hỗ trợ đầy đủ Active Directory (Windows Server), OpenLDAP, FreeIPA và các LDAP server khác với kết nối TLS/STARTTLS bảo mật.


Tính năng chính

Điểm chính

  • Xác thực qua LDAP/Active Directory - Đăng nhập bằng tài khoản domain thay vì mật khẩu Odoo

  • Tự động tạo user - User Odoo được tạo tự động khi đăng nhập lần đầu

  • Nhiều LDAP server - Hỗ trợ cấu hình nhiều LDAP server cho mỗi công ty

  • Đổi mật khẩu trên LDAP - Cho phép user đổi mật khẩu trực tiếp trên LDAP server

  • Kết nối TLS/STARTTLS - Mã hóa kết nối để bảo vệ thông tin đăng nhập

  • Template user - Copy quyền từ user mẫu cho user mới

  • LDAP filter linh hoạt - Tùy chỉnh bộ lọc tìm user theo nhu cầu


Yêu cầu hệ thống

Module cần thư viện python-ldap để kết nối LDAP server.

Các bước thực hiện

  • 1. Cài đặt thư viện: sudo apt-get install python3-ldap (Ubuntu/Debian) hoặc pip install python-ldap

  • 2. Kích hoạt module: Vào Apps, tìm "Authentication via LDAP", nhấn Install

  • 3. Khởi động lại Odoo sau khi cài đặt module


Cấu hình LDAP server

Các bước thực hiện

  • 1. Vào Settings → General Settings, cuộn xuống phần LDAP Authentication

  • 2. Nhấn Add a line để thêm cấu hình LDAP mới

  • 3. Điền thông tin LDAP server: Server address (ldap.company.com), Port (389 cho LDAP, 636 cho LDAPS)

  • 4. Bật Use TLS để mã hóa kết nối (khuyến nghị)

  • 5. Cấu hình LDAP Bind DN (tài khoản để truy vấn LDAP): cn=admin,dc=company,dc=com hoặc để trống nếu cho phép anonymous bind

  • 6. Nhập LDAP Password cho Bind DN

  • 7. Cấu hình LDAP Base (DN gốc để tìm user): ou=Users,dc=company,dc=com

  • 8. Thiết lập LDAP Filter để tìm user, dùng %s cho login. Ví dụ AD: (&(objectCategory=person)(objectClass=user)(sAMAccountName=%s))

  • 9. Chọn Template User để copy quyền cho user mới

  • 10. Bật Create User để tự động tạo user khi đăng nhập lần đầu

  • 11. Nhấn Test Connection để kiểm tra kết nối

  • 12. Nhấn Save để lưu cấu hình


Ví dụ cấu hình Active Directory

FieldsTrường dữ liệuDescription
LDAP Serverad.company.comĐịa chỉ Active Directory server
LDAP Port389Port LDAP (389) hoặc LDAPS (636)
Use TLSYesBật STARTTLS để mã hóa
LDAP Bind DNcn=odoo_service,ou=Service Accounts,dc=company,dc=comTài khoản service để truy vấn AD
LDAP Baseou=Employees,dc=company,dc=comDN gốc chứa user
LDAP Filter(&(objectCategory=person)(objectClass=user)(sAMAccountName=%s))Bộ lọc tìm user AD
Template UserAdminUser mẫu để copy quyền
Create UserYesTự động tạo user mới

Ví dụ cấu hình OpenLDAP

FieldsTrường dữ liệuDescription
LDAP Serverldap.company.comĐịa chỉ OpenLDAP server
LDAP Port389Port LDAP
Use TLSYesBật STARTTLS
LDAP Bind DNcn=admin,dc=company,dc=comAdmin DN
LDAP Baseou=people,dc=company,dc=comDN chứa user
LDAP Filter(uid=%s)Tìm theo uid
Template UserAdminUser mẫu
Create UserYesTự động tạo

Quy trình đăng nhập LDAP

Các bước thực hiện

  • 1. User nhập username và password vào form đăng nhập Odoo

  • 2. Odoo thử xác thực với LDAP server theo thứ tự Sequence

  • 3. LDAP server kiểm tra username/password có hợp lệ không

  • 4. Nếu hợp lệ và Create User bật: Odoo tự động tạo user mới từ thông tin LDAP

  • 5. User được đăng nhập vào Odoo với quyền từ Template User

  • 6. Lần đăng nhập sau: Odoo xác thực lại với LDAP, không cần tạo user mới


Khắc phục sự cố

Các lỗi thường gặp

LỗiNguyên nhânGiải pháp
Connection Test FailedSai địa chỉ LDAP server, firewall chặn portKiểm tra địa chỉ server, mở port 389/636, test telnet
Invalid credentialsSai LDAP Bind DN hoặc passwordKiểm tra lại Bind DN và password, test bằng ldapsearch
User not foundSai LDAP Base hoặc LDAP FilterKiểm tra Base DN có chứa user không, test filter bằng ldapsearch
TLS errorCertificate không hợp lệ, server không hỗ trợ STARTTLSKiểm tra certificate, thử tắt TLS để test, cài đặt CA cert
User created but no accessTemplate User không có quyền phù hợpKiểm tra quyền của Template User, cấp quyền cần thiết
Multiple LDAP servers conflictSequence không đúng, user tồn tại trên nhiều serverĐiều chỉnh Sequence, đảm bảo user chỉ trên 1 server

Best practices

Điểm chính

  • Luôn bật TLS/STARTTLS để mã hóa kết nối, bảo vệ mật khẩu

  • Tạo tài khoản service riêng cho Odoo, không dùng admin account

  • Giới hạn quyền của Bind DN chỉ đọc user, không cho phép ghi

  • Cấu hình LDAP Filter chính xác để tránh tìm nhầm user

  • Test kỹ trước khi áp dụng cho toàn bộ công ty

  • Backup cấu hình LDAP trước khi thay đổi

  • Theo dõi log Odoo để phát hiện lỗi xác thực

  • Cấu hình Template User với quyền tối thiểu cần thiết