入门
用Casdoor登录
CasWAF没有自己的账号。管理界面通过Casdoor登录,同一个Casdoor连接还支撑登录保护、验证码和健康告警。Casdoor是开源的,可以和CasWAF并排运行,也可以作为CasWAF的一个站点放在它后面。
在Casdoor里
-
选择或新建CasWAF管理员所在的组织。
-
在这个组织里添加一个应用。
-
在Redirect URLs里加上管理界面的回调地址,你用哪些地址打开管理界面,就每个都加一条:
http://localhost:17000/callback https://waf.example.com/callback -
记下Client ID和Client secret。
在CasWAF里
后端从conf/app.conf读取这几项:
| 配置项 | 值 |
|---|---|
casdoorEndpoint | Casdoor的地址,例如https://door.example.com |
clientId、clientSecret | 应用的Client ID和Client secret |
casdoorOrganization | 组织 |
casdoorApplication | 应用名 |
浏览器里的登录按钮读的是web/src/Conf.js,它会编译进web/build。在那里填上相同的地址、Client ID、应用和组织,再用yarn build重新编译管理界面:
export const AuthConfig = {
serverUrl: "https://door.example.com",
clientId: "<client ID>",
appName: "<application>",
organizationName: "<organization>",
redirectPath: "/callback",
};谁能登录
只有组织的管理员,即在Casdoor里打开了Is admin的用户,才能管理CasWAF。其他人登录这个应用后能看到管理界面,但每个页面都会提示“this operation requires admin privilege”。每个管理员都能管理所有站点、证书和规则;目前还没有只读角色。
所以只给运维CasWAF的人打开Is admin,这个组织里的其他人都不要打开。给CasWAF单独建一个组织,并关掉应用的注册,管理起来最简单。
一次登录会话有效一年。会话以文件形式保存在程序旁边的tmp/里;设置了redisEndpoint时保存在Redis里,这样多个管理界面实例可以共用会话。
只读演示模式
在conf/app.conf里设置isDemoMode = true后,CasWAF拒绝通过API做的一切修改,登录和退出除外。同时在web/src/Conf.js里设置IsDemoMode,管理界面会提示访客这是只读演示站。