BookStack 在使用 AD 验证后,还可以将角色与 AD 的群组进行串接,以简化群组成员变动的工作,不过在使用和设置上,有些地方需要注意,虽然都是小问题,但我自己花了一两周的时间才找出原因,因此整理出来分享。
根据官方說明,先將 .env 檔加入以下設定值:
# Enable LDAP group sync, Set to 'true' to enable. LDAP_USER_TO_GROUPS=true # LDAP user attribute containing groups, Defaults to 'memberOf'. LDAP_GROUP_ATTRIBUTE="memberOf" # Remove users from roles that don't match LDAP groups. LDAP_REMOVE_FROM_GROUPS=false
完成设置后,以下面環境為例設定:
AD / BookStack 帳號: 测试
BookStack 角色: test-bs-group
AD 群組: test-ad-group
在 BookStack 新增一個角色 “test-bs-group”,並在其「外部身份驗證ID」輸入 “test-ad-group”。

當 AD 中 ”test-ad-group” 成員 “test” 帳號登入 BoookStack 時,會自動將其帶進 “test-bs-group” 角色。

【注意】
◎ BookStack 的 AD 群組机制是把 BookStack 现有的角色和 AD 群组关联起来,而不是复制 AD 群组到 BookStack。
◎ AD 群组名称可以包含下划线 '_' 或减号 '-',但不可以有空格,也不能是中文。
◎ 如果 AD 成员账号是 AD 群组的孙成员,依然可以被赋予关联的角色 (子群组的名称也不能有空格及中文)。
測試沒問題後,若希望 AD 在異動群組成員時,BookStack 能同步調整角色成員,請進行下列設定:
1. 在 AD 新增自定義管理者群組,示例:BS_Admin。
2. 將 AD 管理者帳號 administrator 加入到 BS_Admin。
3. 修改 BookStack 的 Admin 角色,在「外部身份驗證ID」欄位輸入 BS_Admin。
4. 修改 .env,將 LDAP_REMOVE_FROM_GROUPS 改成 true。
【注意】
◎ 1~3的步驟要先進行,才能修改步驟4的值,否則 BookStack 的 admin 角色成員會被清空,造成沒有任何帳號有管理權限。
◎如不幸發生上述情形,需連進資料庫,修改 “roles” table ,將 admin 角色的 external_auth_id 欄位,輸入 AD 自定義的管理者群組名稱 (如 BS_Admin)。
【相关资料】
- v0.23.2 // (AD) LDAP & “Default user role”… also, multiple ldap_user_filter entries? · 问题 #973 · BookStackApp/BookStack · GitHub
- how LDAP group sync works · Issue #1059 · BookStackApp/BookStack · GitHub








留下回复