BookStack 角色串接 AD 群組

  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 帳號: test
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)。

 

【相關資料】

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.