LDAP là gì
LDAP là một giao thức xác thực được dùng để xác minh danh tính từ bên ngoài. Overleaf Server Pro cung cấp một biểu mẫu đăng nhập LDAP riêng trong giao diện web, tách biệt với phương thức xác thực tiêu chuẩn. Khi người dùng gửi tên đăng nhập và mật khẩu LDAP, backend của Overleaf sẽ xác minh thông tin đăng nhập với máy chủ LDAP đã được cấu hình, ví dụldap://ldap:10389.

Ví dụ về LDAP trên Server Pro
Cấu hình
Bên trong, LDAP của Overleaf sử dụng thư viện passport-ldapauth. Hầu hết các tùy chọn cấu hình này được truyền vào đối tượng cấu hìnhserver dùng để cấu hình passport-ldapauth. Nếu bạn gặp vấn đề khi cấu hình LDAP, bạn nên đọc README của passport-ldapauth để hiểu cấu hình mà thư viện này mong đợi.
Biến môi trường EXTERNAL_AUTH là bắt buộc để bật module xác thực LDAP. Biến môi trường này chỉ định những phương thức xác thực bên ngoài nào được kích hoạt. Giá trị của biến là một danh sách. Nếu danh sách có chứa ldap thì xác thực LDAP sẽ được kích hoạt.
Ví dụ: EXTERNAL_AUTH=ldap saml
Khác với Overleaf CEP, trong phiên bản ayaka-notes của chúng tôi, xác thực LDAP được giới hạn là một phương thức xác thực thuần túy, có tại http://your-overleaf.com/ldap/login.
Khi sử dụng phương thức xác thực LDAP, người dùng nhập username và password vào biểu mẫu đăng nhập, hệ thống sẽ thực hiện:
- Tìm kiếm người dùng LDAP trong thư mục LDAP bằng bộ lọc được định nghĩa bởi
OVERLEAF_LDAP_SEARCH_FILTERvà xác thực. - Nếu xác thực thành công, cơ sở dữ liệu người dùng Overleaf sẽ được kiểm tra để tìm người dùng có địa chỉ email chính khớp với địa chỉ email của người dùng LDAP đã xác thực:
- Nếu tìm thấy người dùng khớp, trường
hashedPasswordcủa người dùng này sẽ bị xóa (nếu có). Điều này đảm bảo rằng sau này người dùng chỉ có thể đăng nhập qua xác thực LDAP. - Nếu không tìm thấy người dùng khớp, một người dùng Overleaf mới sẽ được tạo bằng email, tên và họ được lấy từ máy chủ LDAP.
- Nếu tìm thấy người dùng khớp, trường
Biến môi trường
OVERLEAF_LDAP_URL(bắt buộc)- URL của máy chủ LDAP.
- Ví dụ:
ldaps://ldap.example.com:636(LDAP qua SSL) - Ví dụ:
ldap://ldap.example.com:389(không mã hóa hoặc STARTTLS, nếu được cấu hình).
- Ví dụ:
- URL của máy chủ LDAP.
OVERLEAF_LDAP_IDENTITY_SERVICE_NAME- Tên hiển thị của dịch vụ danh tính LDAP, được dùng trên trang đăng nhập.
- Mặc định là
Log in with LDAP Provider.
OVERLEAF_LDAP_EMAIL_ATT- Thuộc tính email được máy chủ LDAP trả về, mặc định là
mail. Mỗi người dùng LDAP phải có ít nhất một địa chỉ email. Nếu có nhiều địa chỉ, chỉ địa chỉ đầu tiên được sử dụng.
- Thuộc tính email được máy chủ LDAP trả về, mặc định là
OVERLEAF_LDAP_FIRST_NAME_ATT- Tên thuộc tính chứa tên (first name) của người dùng được dùng trong ứng dụng, thường là
givenName.
- Tên thuộc tính chứa tên (first name) của người dùng được dùng trong ứng dụng, thường là
OVERLEAF_LDAP_LAST_NAME_ATT- Tên thuộc tính chứa họ (family name) của người dùng được dùng trong ứng dụng, thường là
sn.
- Tên thuộc tính chứa họ (family name) của người dùng được dùng trong ứng dụng, thường là
OVERLEAF_LDAP_NAME_ATT- Tên thuộc tính chứa họ tên đầy đủ của người dùng, thường là
cn. Nếu một trong hai biến trước không được định nghĩa, tên và/hoặc họ của người dùng sẽ được trích xuất từ biến này. Ngược lại, biến này sẽ không được sử dụng.
- Tên thuộc tính chứa họ tên đầy đủ của người dùng, thường là
OVERLEAF_LDAP_PLACEHOLDER- Placeholder cho biểu mẫu đăng nhập, mặc định là
Username.
- Placeholder cho biểu mẫu đăng nhập, mặc định là
OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN- Nếu đặt là
true, các trườngfirst_namevàlast_namecủa người dùng LDAP sẽ được cập nhật khi đăng nhập, đồng thời tắt biểu mẫu thông tin người dùng trên trang/user/settingsđối với người dùng LDAP. Nếu không, thông tin chỉ được lấy trong lần đăng nhập đầu tiên.
- Nếu đặt là
OVERLEAF_LDAP_BIND_DN- Distinguished name của người dùng LDAP được dùng cho kết nối LDAP (người dùng này phải có khả năng tìm kiếm/liệt kê tài khoản trên máy chủ LDAP), ví dụ
cn=ldap_reader,dc=example,dc=com. Nếu không được định nghĩa, binding ẩn danh sẽ được sử dụng.
- Distinguished name của người dùng LDAP được dùng cho kết nối LDAP (người dùng này phải có khả năng tìm kiếm/liệt kê tài khoản trên máy chủ LDAP), ví dụ
OVERLEAF_LDAP_BIND_CREDENTIALS- Mật khẩu cho
OVERLEAF_LDAP_BIND_DN.
- Mật khẩu cho
OVERLEAF_LDAP_BIND_PROPERTY- Thuộc tính của người dùng dùng để bind với client, mặc định là
dn.
- Thuộc tính của người dùng dùng để bind với client, mặc định là
OVERLEAF_LDAP_SEARCH_BASE(bắt buộc)- Base DN để bắt đầu tìm kiếm người dùng. Ví dụ:
ou=people,dc=example,dc=com.
- Base DN để bắt đầu tìm kiếm người dùng. Ví dụ:
OVERLEAF_LDAP_SEARCH_FILTER- Bộ lọc tìm kiếm LDAP dùng để tìm người dùng. Sử dụng chuỗi ‘{{username}}’ để tên đăng nhập được cung cấp được chèn vào phép tìm kiếm LDAP.
- Ví dụ:
(|(uid={{username}})(mail={{username}}))(người dùng có thể đăng nhập bằng email hoặc tên đăng nhập). - Ví dụ:
(sAMAccountName={{username}})(Active Directory).
- Ví dụ:
- Bộ lọc tìm kiếm LDAP dùng để tìm người dùng. Sử dụng chuỗi ‘{{username}}’ để tên đăng nhập được cung cấp được chèn vào phép tìm kiếm LDAP.
OVERLEAF_LDAP_SEARCH_SCOPE- Phạm vi tìm kiếm có thể là
base,onehoặcsub(mặc định).
- Phạm vi tìm kiếm có thể là
OVERLEAF_LDAP_SEARCH_ATTRIBUTES- Mảng JSON các thuộc tính cần lấy từ máy chủ LDAP, ví dụ
["uid", "mail", "givenName", "sn"]. Theo mặc định, tất cả thuộc tính đều được lấy.
- Mảng JSON các thuộc tính cần lấy từ máy chủ LDAP, ví dụ
OVERLEAF_LDAP_STARTTLS- Nếu là
true, LDAP qua TLS sẽ được sử dụng.
- Nếu là
OVERLEAF_LDAP_TLS_OPTS_CA_PATH- Đường dẫn đến tệp chứa chứng chỉ CA dùng để xác minh chứng chỉ SSL/TLS của máy chủ LDAP. Nếu có nhiều chứng chỉ, giá trị có thể là một mảng JSON các đường dẫn đến chứng chỉ. Docker container phải truy cập được các tệp này.
- Ví dụ (một chứng chỉ):
/var/lib/overleaf/certs/ldap_ca_cert.pem - Ví dụ (nhiều chứng chỉ):
["/var/lib/overleaf/certs/ldap_ca_cert1.pem", "/var/lib/overleaf/certs/ldap_ca_cert2.pem"]
- Ví dụ (một chứng chỉ):
- Đường dẫn đến tệp chứa chứng chỉ CA dùng để xác minh chứng chỉ SSL/TLS của máy chủ LDAP. Nếu có nhiều chứng chỉ, giá trị có thể là một mảng JSON các đường dẫn đến chứng chỉ. Docker container phải truy cập được các tệp này.
OVERLEAF_LDAP_TLS_OPTS_REJECT_UNAUTH- Nếu là
true, chứng chỉ của máy chủ sẽ được xác minh dựa trên danh sách các CA được cung cấp.
- Nếu là
OVERLEAF_LDAP_CACHE- Nếu là
true, tối đa 100 thông tin đăng nhập cùng lúc sẽ được lưu vào bộ nhớ đệm trong 5 phút.
- Nếu là
OVERLEAF_LDAP_TIMEOUT- Thời gian client cho phép các thao tác tồn tại trước khi hết thời gian chờ, tính bằng ms (Mặc định: Infinity).
OVERLEAF_LDAP_CONNECT_TIMEOUT- Thời gian client chờ trước khi hết thời gian chờ đối với kết nối TCP, tính bằng ms (Mặc định: giá trị mặc định của hệ điều hành).
OVERLEAF_LDAP_IS_ADMIN_ATTvàOVERLEAF_LDAP_IS_ADMIN_ATT_VALUE- Khi cả hai biến môi trường được đặt, quá trình đăng nhập sẽ cập nhật
user.isAdmin = truenếu hồ sơ LDAP chứa thuộc tính được chỉ định bởiOVERLEAF_LDAP_IS_ADMIN_ATTvà giá trị của nó khớp vớiOVERLEAF_LDAP_IS_ADMIN_ATT_VALUEhoặc là một mảng chứaOVERLEAF_LDAP_IS_ADMIN_ATT_VALUE; ngược lại,user.isAdminđược đặt làfalse. Nếu một trong hai biến không được đặt, trạng thái quản trị viên chỉ được đặt làtruekhi tạo người dùng quản trị trong Launchpad.
- Khi cả hai biến môi trường được đặt, quá trình đăng nhập sẽ cập nhật
OVERLEAF_LDAP_CONTACTS_FILTER- Bộ lọc dùng để tìm kiếm người dùng trên máy chủ LDAP để nạp vào danh bạ. Placeholder ‘{{userProperty}}’ trong bộ lọc sẽ được thay bằng giá trị của thuộc tính được chỉ định bởi
OVERLEAF_LDAP_CONTACTS_PROPERTYcủa người dùng LDAP khởi tạo tìm kiếm. Nếu không được định nghĩa, sẽ không có người dùng nào được lấy từ máy chủ LDAP vào danh bạ.
- Bộ lọc dùng để tìm kiếm người dùng trên máy chủ LDAP để nạp vào danh bạ. Placeholder ‘{{userProperty}}’ trong bộ lọc sẽ được thay bằng giá trị của thuộc tính được chỉ định bởi
OVERLEAF_LDAP_CONTACTS_SEARCH_BASE- Chỉ định base DN để bắt đầu tìm kiếm danh bạ. Mặc định là
OVERLEAF_LDAP_SEARCH_BASE.
- Chỉ định base DN để bắt đầu tìm kiếm danh bạ. Mặc định là
OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE- Phạm vi tìm kiếm có thể là
base,onehoặcsub(mặc định).
- Phạm vi tìm kiếm có thể là
OVERLEAF_LDAP_CONTACTS_PROPERTY- Chỉ định thuộc tính của đối tượng người dùng sẽ thay thế placeholder ‘{{userProperty}}’ trong
OVERLEAF_LDAP_CONTACTS_FILTER.
- Chỉ định thuộc tính của đối tượng người dùng sẽ thay thế placeholder ‘{{userProperty}}’ trong
OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE- Chỉ định giá trị của
OVERLEAF_LDAP_CONTACTS_PROPERTYnếu việc tìm kiếm được khởi tạo bởi người dùng không phải LDAP. Nếu biến này không được định nghĩa, bộ lọc kết quả sẽ không khớp với gì cả. Giá trị*có thể được dùng làm ký tự đại diện.
- Chỉ định giá trị của
Ví dụ
Ví dụ
gid. Người dùng không phải LDAP sẽ có tất cả người dùng LDAP có UNIX gid=1000 trong danh bạ của họ.Tệp variables.env mẫu
Tệp variables.env mẫu
Hướng dẫn từng bước: goauthentik
Phần này hướng dẫn một cấu hình đã được kiểm thử với goauthentik. Các ví dụ sử dụng Base DNdc=example,dc=com; hãy thay bằng Base DN của bạn.
Tạo tài khoản bind
ldapservice, rồi nhấp Create:
Authentik: tạo tài khoản bind
OVERLEAF_LDAP_BIND_CREDENTIALS:
Authentik: đặt mật khẩu cho tài khoản bind (phiên bản thử nghiệm)
19 trong …/#/identity/users/19. Bạn sẽ cần số này ở bước 3.Tạo provider và application
overleaf-ldap, rồi nhấp Next:
Authentik: tên và slug của application

Authentik: chọn provider LDAP

Authentik: chế độ bind và tìm kiếm của provider LDAP
default-authentication-flow và Base DN thành Base DN của bạn, ví dụ dc=example,dc=com:
Authentik: bind flow và Base DN của provider LDAP
Cho phép tài khoản bind tìm kiếm trong thư mục
ak-managed-role--user-<number>, sau đó bật Search full LDAP directory:
Authentik: cấp quyền tìm kiếm cho tài khoản bind (phiên bản thử nghiệm)

Authentik: quyền của một provider LDAP (phiên bản thử nghiệm)
Chạy LDAP outpost

Authentik: một LDAP outpost đang chạy (phiên bản thử nghiệm)
Điền các DN

Authentik: tổng quan của một provider LDAP (phiên bản thử nghiệm)
- Bind DN hiển thị tài khoản bạn đang đăng nhập. Thay vào đó, hãy dùng tài khoản bind từ bước 1:
cn=ldapservice,ou=users,<Base DN>. - Search base hiển thị Base DN. Hãy dùng
ou=users,<Base DN>.
Kiểm tra việc tìm kiếm
dn::dn: nào, thường là do thiếu quyền ở bước 3.Ánh xạ quản trị viên (tùy chọn)
memberOf, dưới dạng các DN thuộc ou=groups. Để các thành viên của nhóm Authentik Admins trở thành quản trị viên Overleaf:Tệp variables.env đã kiểm thử cho goauthentik
Tệp variables.env đã kiểm thử cho goauthentik

