Atlassian Crowd 伺服器遷移 IP 後,應用登錄報錯:
org.codehaus.xfire.fault.XFireFault: Client with address "192.168.1.222" ... is forbidden from making requests to the application, crowd.
原因:Crowd 在資料表 cwd_application_address 中維護允許存取的 IP 白名單,IP 變更後未同步更新。
mysql> SELECT * FROM cwd_application_address; +----------------+-----------------------+-----------------------+---------------------+ | application_id | remote_address | remote_address_binary | remote_address_mask | +----------------+-----------------------+-----------------------+---------------------+ | 2 | 127.0.0.1 | fwAAAQ== | 0 | | 2 | 192.168.1.111 | wKgBmw== | 0 | <-- 舊 IP | 2 | localhost | NULL | 0 | | ... | ... | ... | ... | +----------------+-----------------------+-----------------------+---------------------+
Crowd 將 IPv4 存為 4 位元組二進制再 Base64。一鍵生成:
IP=192.168.1.222 printf "\\x$(printf "%X %X %X %X" $(echo $IP | tr . ' ') | sed 's/ /\\\\x/g')" | base64 # 輸出:wKgByQ==
原理:192.168.1.222 → C0 A8 01 DE (Hex) → 二進制 → Base64。
UPDATE cwd_application_address
SET remote_address = '192.168.1.222',
remote_address_binary = 'wKgByQ=='
WHERE application_id = 2
AND remote_address_binary = 'wKgBmw=='; -- 精確匹配舊 IP 二進制值
# 視部署方式而定 systemctl restart crowd # 或 ./stop_crowd.sh && ./start_crowd.sh
重新嘗試應用登錄,錯誤消失,功能恢復正常。
remote_address_mask 通常為 0(精確匹配),若需 CIDR 範圍則設為對應掩碼位數。application_id(如 Crowd 自身、Jira、Confluence 等),請按實際 application_id 更新。{CROWD_HOME}/caches/ 目錄。Crowd IP 白名單儲存於 MySQL,IP 變更需同步更新 remote_address 及其 Base64 二進制欄位。掌握 printf ... | base64 快速生成編碼,配合精確 SQL 更新,可在分鐘級完成故障恢復。