LDAP (Light-weight Directory Access Protocol) 是企业广泛部署的用户信息管理服务器,微软的活动目录服务器(Active Directory)完全兼容 LDAP。这个文档假定您已经了解了 LDAP 相关的知识和术语。
SeaTable 中的用户分为两类:
SeaTable 会自动从内部数据库和 LDAP 中查找用户,只要用户存在于任何一个来源,他们都能登录。
SeaTable 要求 LDAP/AD 服务器中每个用户都有一个唯一的 ID。一般来说,AD 中用ObjectGUID
,而其他LDAP服务器用EntryUUID
把下面的配置添加到 dtable_web_settings.py 中。
ENABLE_LDAP = True
LDAP_PROVIDER = 'ldap'
LDAP_SERVER_URL = 'ldap://192.168.0.124'
LDAP_BASE_DN = 'ou=test,ou=test,dc=seatable,dc=local'
LDAP_ADMIN_DN = 'administrator@seatable.local'
LDAP_ADMIN_PASSWORD = 'Hello@123'
LDAP_USER_UNIQUE_ID = 'objectGUID'
LDAP_LOGIN_ATTR = 'mail'
# 以下选项用于群组同步
LDAP_SYNC_GROUP = True
LDAP_GROUP_MEMBER_ATTR = 'member'
LDAP_GROUP_MEMBER_UID_ATTR = 'uid'
LDAP_USER_OBJECT_CLASS = 'person'
LDAP_GROUP_OBJECT_CLASS = 'group'
LDAP_GROUP_UUID_ATTR = 'objectGUID'
SYNC_GROUP_AS_DEPARTMENT = False
LDAP_DEPARTMENT_NAME_ATTR = ''
# 以下是可选选项
# 导入AD用户时,是否激活用户
ACTIVATE_USER_WHEN_IMPORT = True
# 是否兼容LDAP用户通过SAML单点登录方式登录
LDAP_SAML_USE_SAME_UID = True
# 该属性是LDAP中用户的角色,SeaTable使用该属性作为用户的role,默认值为''
LDAP_USER_ROLE_ATTR = 'title'
# 该属性是LDAP中用户的工号,SeaTable使用该属性作为用户的ID,默认值是''
LDAP_EMPLOYEE_ID_ATTR = 'employee_id'
# 以下两个属性用于拼接处用户的昵称:first_name last_name, 这两个是可选选项,默认是''
LDAP_USER_FIRST_NAME_ATTR = 'givenName'
LDAP_USER_LAST_NAME_ATTR = 'sn'
# 针对中文名字,将 first_name 和 last_name 的顺序反过来,这个是可选选项,默认是False
LDAP_USER_NAME_REVERSE = True
# 用作 SeaTable 中用户登录 LDAP 的属性。如果通过 email 来登录,可以使用 'mail' 或者 'userPrincipalName';如果希望通过 Windows 用户名登录,可以使用 'sAMAccountName' 属性
LDAP_LOGIN_ATTR = 'userPrincipalName'
# 该属性为用户的联系邮箱
LDAP_CONTACT_EMAIL_ATTR = 'mail'
# 用来过滤可登录的用户范围,比如限定在某个安全组内
LDAP_FILTER = 'memberOf=CN=group,CN=developers,DC=example,DC=com'
LDAP_GROUP_FILTER = 'memberOf=CN=group,CN=developers,DC=example,DC=com'
# 从 4.0 开始,支持 LDAP 登录 支持SASL认证
ENABLE_SASL = True
SASL_MECHANISM = 'DIGEST-MD5' # SASL 认证机制
SASL_AUTHC_ID_ATTR = 'cn' # olcAuthzRegexp 映射正则匹配规则中的<match>部分的uid对应的用户属性
各个配置选项的含义如下:
注意:如果配置项包含中文,需要确保配置文件使用 UTF8 编码保存。
关于如何选定 LDAP_BASE_DN和 LDAP_ADMIN_EMAIL 的一些技巧:
dsquery
命令行工具来查找相应 OU 的 DN。比如,如果 OU 的名字是 'staffs',您可以运行 dsquery ou -name staff
。更多的信息可以参考这里。LDAP_ADMIN_EMAIL
。比如您可以使用 administrator@example.com 作为 LDAP_ADMIN_EMAIL
。有些时候 AD 不能正确识别这种格式。此时您可以使用 dsquery
来查找用户的 DN。比如,假设用户名是 'seatableuser',运行 dsquery user -name seatableuser
来找到该用户的 。更多的信息可以参考这里。SeaTable 定期同步 LDAP 用户和组。在 dtable-event.conf 文件中增加以下配置选项,重启 SeaTable,以便生效。
[LDAP_SYNC]
enabled = true
sync_interval = 60 # 单位是秒
注:如果需要同步群组,需要在 dtable_web_settings.py 中添加相应的配置项,具体配置,请参考上文基本的 LDAP/AD 集成配置
。
Last modified by seatable, 2023-08-08