如何在自架的 Matrix 伺服器上限制使用者註冊
比較在 Synapse 上控制新 Matrix 帳戶的方法,從停用公用註冊到頒發有限用途的令牌,並提供設定範例和檢查。
在自架的 Matrix 伺服器上,「限制註冊」可以指從完全禁止公開註冊到僅允許擁有邀請碼的使用者註冊等各種情況。對於 Synapse 來說,最簡單的選擇是停用公開註冊。如果您仍然希望新用戶加入,可以要求用戶使用註冊令牌,並為每位用戶分配一個有效期有限的令牌。這些控制措施會影響本機新帳戶的建立;它們不會刪除現有使用者或停用 Matrix 聯盟。
| 目標 | 突觸方法 | 主要權衡 |
|---|---|---|
| 只有管理員才能建立帳戶 | 設定enable_registration: false;使用管理員 CLI 或受控的管理員工作流程。 | 使用者無法透過 Matrix 用戶端註冊。請保護所有共享的註冊密鑰。 |
| 邀請一個小社區 | 啟用註冊並要求註冊令牌;頒發一次性、短期令牌。 | 管理員必須分發和管理令牌。任何收到有效令牌的人都可以使用它。 |
| 允許公眾廣泛註冊 | 保持註冊開放,並添加適當的防濫用檢查,例如驗證碼或令牌,以及速率限制和監控。 | 對合法使用者來說,這會造成更多阻礙,而且沒有任何單一的檢查措施可以保證防止濫用。 |
| 使用身分提供者 | 如果存取必須預先獲得批准,請在提供者的 Synapse 設定中設定 SSO 並停用自動建立帳戶。 | 需要身分識別提供者管理;有效的 SSO 登入並不一定意味著存在 Matrix 帳戶。 |
以下範例適用於 Synapse。 Dendrite、Conduit 和其他 HomeServer 實作使用不同的設定和管理介面。在套用 Synapse 設定之前,請先查閱伺服器本身的文件。
對於私人家庭伺服器、小型組織或管理員配置每個帳戶的伺服器,請在目前 Synapse 設定中停用用戶端註冊:
enable_registration: false
Synapse 文件顯示此設定預設為停用狀態。請編輯您的服務或容器實際載入的設定文件,驗證 YAML 文件,然後使用常規的服務管理流程重新啟動 Synapse。 Docker 部署可能會從主機路徑掛載配置,因此在容器內編輯同名檔案可能不會變更啟動時使用的檔案。
關閉註冊功能後,使用者無法透過常規用戶端註冊流程建立新帳戶。管理員仍然可以透過受支援的管理方式建立帳戶。 Synapse 特別警告,registration_shared_secret即使此設定enable_registration設為 false,仍允許使用該金鑰建立帳戶。請將其視為高風險憑證:切勿將其儲存在程式碼庫、聊天記錄和公共環境轉儲檔案中;限制存取權限;並且僅在管理工作流程需要時才保留。任何擁有此金鑰的人都可以建立帳戶,包括管理員帳戶。
如果您使用 OIDC、CAS 或其他 SSO 集成,也請檢查該提供者的自動註冊設定。 Synapse 會記錄提供者層級的註冊設置,因為否則使用者可能會在首次成功 SSO 登入後自動建立。對於 OIDC,請oidc_providers[].enable_registration同時查看其常規註冊設定。
當成員需要能夠建立自己的帳戶,但註冊請求需要由管理員批准或分發時,請使用註冊令牌。在 Synapse 配置中,設定以下兩個值:
enable_registration: true
registration_requires_token: true
兩者都需要:令牌設定需要在註冊時提供令牌,同時註冊功能也必須啟用。應用變更並重新啟動 Synapse。更改此設定不會刪除現有帳戶和先前建立的令牌。
Synapse 提供了一個註冊令牌管理 API。請求需要管理員存取令牌。例如,下列請求會建立一個可以完成一次註冊的令牌:
curl -sS -X POST "$SYNAPSE_URL/_synapse/admin/v1/registration_tokens/new" \
-H "Authorization: Bearer $ADMIN_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
--data '{"uses_allowed": 1}'
將環境變數替換為您的主伺服器基本 URL 和管理員存取權杖。請務必妥善保管管理員令牌,避免將包含真實憑證的命令貼到共享日誌或支援貼文中。 API 也接受以 Unix 紀元以來的毫秒數為單位的過期時間。對於單一邀請,請使用一次性令牌,並在您的工作流程能夠可靠地計算和維護過期時間時設定過期時間。省略限制的令牌可能具有無限次使用次數和永久過期時間,因此在分發令牌之前,請務必檢查返回的欄位。
若要檢查令牌,管理員可以呼叫對應的 API GET /_synapse/admin/v1/registration_tokens。回應內容包括允許的使用次數、待處理的註冊、已完成的註冊、過期時間。如果令牌洩露,請將其允許的使用次數更新為零,或透過文件中提供的管理員 API 將其刪除。令牌是註冊憑證,而非 Matrix 房間邀請;它不會自動將新帳戶加入房間。
重要相容性提示:啟用 Matrix Authentication Service (MAS) 整合後,Synapse 的註冊令牌管理 API 將會停用。在這種情況下,請改用部署文件中提供的 MAS 管理 API 或 MAS CLI。請勿假設 Synapse 令牌命令可以直接用於 MAS。
如果您希望任何人都能申請帳戶,那麼要求提供令牌可能過於嚴格。 Synapse 的設定文件中也提到了驗證碼 (CAPTCHA) 和第三方識別碼 (3PID) 作為可能的驗證方式。驗證碼依賴於配置正確的服務提供者,並且可能會增加可訪問性和隱私方面的成本。要求提供電子郵件地址或電話號碼會增加設定和驗證的依賴;這與批准每個帳戶並不相同。在將 3PID 要求作為門檻之前,請確認您的版本和用戶端流程實際支援哪些驗證服務。
速率限制與這些控制措施配合使用非常有用,因為它能減少重複請求,但它並不能決定哪些使用者可以註冊。請監控註冊嘗試和伺服器日誌,並根據您的流量和部署情況調整限制。切勿在未檢查已安裝的 Synapse 版本的情況下複製舊的設定片段:註冊和身分識別服務選項會隨時間而變更。
隱藏註冊 URL 的反向代理規則可以作為額外的網路層控製手段,但它很容易破壞客戶端流程,並且不會取代主伺服器本身的配置。建議使用應用層設定作為主要控製手段,並在每次代理更改後測試實際部署情況。
completed、pending令牌和過期資訊。除非您打算使用真實的邀請令牌,否則請勿將其用於測試帳戶。如果設定似乎無效,請先確認您已更改 Synapse 實際載入的文件,並且服務已重新啟動。然後檢查是否存在共用註冊金鑰、SSO 自動註冊或其他受信任的設定機制。
Synapse 的版本化設定和管理 API 文件是選項名稱和請求欄位的權威來源。以上說明並未預設特定的作業系統、容器映像、反向代理程式或 Matrix 用戶端;請在套用變更前確認這些部署相關的具體細節。
比較在 Synapse 上控制新 Matrix 帳戶的方法,從停用公用註冊到頒發有限用途的令牌,並提供設定範例和檢查。
修正 ownCloud 空白頁問題,首先要區分瀏覽器、PHP、應用程式、權限、升級和代理故障,然後選擇幹擾最小的復原路徑。
診斷 Zimbra 停止的 NGINX 代理,讀取正確的日誌,安全地重新啟動它,並檢查針對缺失配置、無效連接埠、憑證和上游故障的修復措施。
在進行任何有風險的變更之前,請先檢查佇列、日誌、SpamAssassin、ClamAV 和復原跡象,以了解如何診斷和修復 Zimbra Amavis CPU 佔用率達到 100% 的問題。
透過檢查帳戶詳細資料、憑證、憑證、網路路徑和伺服器策略來排查 iPhone 上的 Zimbra ActiveSync 錯誤,並比較安全的替代方案。
從架構、效能表現、記憶體需求、快取、擴充和實際部署權衡等方面比較 ownCloud Infinite Scale 和 Nextcloud 28。
透過檢查部署、設定 Redis 或 KeyValueCache、重新啟動相關服務以及驗證檔案操作,修復 Nextcloud 的事務性檔案鎖定警告。
透過實際的 CLI 範例、TLS 指南、綁定 DN 和搜尋過濾器模式、驗證步驟和回滾檢查,為 Zimbra 設定外部 LDAP 驗證。
使用 cron 任務、保留規則、日誌和驗證功能,設定安全的 BigBlueButton 自動化錄製清理機制。比較原始資料清理和完整錄製刪除的效果。
比較 Jibri 和 OBS 在將 Jitsi Meet 直播到 YouTube 方面的效能,然後配置正確的路由,安全地使用您的直播金鑰,並驗證即時預覽。