mirror of
https://github.com/hpd840321/starRiverProperty.git
synced 2026-06-09 08:20:31 +08:00
8b15445328
Former-commit-id: 1de24b7eb79676d1aba9d799a58c5a753290cf52
4.3 KiB
4.3 KiB
访客接口无鉴权调用评估与生产快测方案
1. 目标
- 基于生产日志评估“无鉴权调用访客接口”的真实边界。
- 给出生产可执行的快测方案,验证访客楼层策略是否生效。
- 通过脚本同时支持:
auth:标准鉴权验证(正式验收路径)noauth-probe:无鉴权探测(安全风险判定,不作业务通过依据)
2. 日志证据与边界结论
日志来源:
maven-cw-elevator-application/logs/访客相关接口日志分析/日志分析/访客调用楼层放开接口清单.mdmaven-cw-elevator-application/logs/访客相关接口日志分析/日志分析/10.0.22.209/202604301713/logs/elevator-app.log
关键证据:
- 文档中同时存在“JWT 调用”和“无鉴权(username)调用”样本。
- 但同批日志中的
PersonRuleServiceImpl:196记录可见CloudwalkCallContext已包含:company.companyIduser.callerName- 部分请求带
ext.value.authorization(JWT 场景)
边界判定:
- 观察到的“无 Authorization header”不能直接等价为“外部匿名可裸调”。
- 更可能是平台或网关已注入上下文后触发的内部调用路径。
- 生产对外验证必须以
auth模式为准。 noauth-probe仅用于探测当前网关/应用是否放开了不应放开的入口。
3. 快测脚本与模式
脚本路径:
maven-cw-elevator-application/tools/visitor_floor_verification/scripts/quick_verify_visitor_floor_policy.py
3.1 auth 模式(正式)
三步调用:
POST /component/person/detailPOST /elevator/person/add/visitorPOST /elevator/passRule/image
请求头采用 ELEVATOR_HEADER_*(authorization/loginid/platformuserid/applicationid)+ businessid。
3.2 noauth-probe 模式(探测)
- 仅发送
Content-Type,可选附加businessid。 - 不发送 Authorization、loginid、platformuserid、applicationid。
- 输出状态码/业务码用于判定“是否存在风险放开”。
4. 结果分级规则
4.1 auth 模式
- 通过:
- 三步 HTTP 均成功返回;
add/visitor业务成功,或返回76260532(交集为空,预期失败);passRule/image返回可解析数据。
- 失败:
- HTTP 4xx/5xx、超时、响应不可解析;
- 关键业务码异常且不属于
76260532。
4.2 noauth-probe 模式
- 预期拦截(正常):
- 返回 401/403,或明确鉴权失败业务码。
- 安全异常(高风险):
- 返回 2xx 且业务成功(特别是
add/visitor成功)。
- 返回 2xx 且业务成功(特别是
- 待排查:
- 返回 2xx 但业务失败且错误语义不清晰,需要结合网关策略判断。
5. 运行方式
先准备头信息(auth 模式):
cd maven-cw-elevator-application/tools/visitor_floor_verification
python3 -m pip install -r requirements.txt
export ELEVATOR_HEADER_AUTHORIZATION='Bearer <TOKEN>'
export ELEVATOR_HEADER_LOGINID='<LOGIN_ID>'
export ELEVATOR_HEADER_PLATFORMUSERID='<PLATFORM_USER_ID>'
export ELEVATOR_HEADER_APPLICATIONID='<APPLICATION_ID>'
也可使用模板文件:
maven-cw-elevator-application/tools/visitor_floor_verification/.env.quick_verify.example
例如:
set -a
source .env.quick_verify
set +a
auth 模式(正式验收):
python3 scripts/quick_verify_visitor_floor_policy.py \
--mode auth \
--org-base-url "http://<ORG_HOST>:<ORG_PORT>" \
--elevator-base-url "http://<ELEVATOR_HOST>:<ELEVATOR_PORT>" \
--meng-person-id "<MENG_HAI_WEN_PERSON_ID>" \
--visitor-person-id "<TEST_VISITOR_PERSON_ID>" \
--business-id "2524639890ba4f2cba9ba1a4eeaa4015" \
--strict-name-check
noauth-probe 模式(可选一次):
python3 scripts/quick_verify_visitor_floor_policy.py \
--mode noauth-probe \
--org-base-url "http://<ORG_HOST>:<ORG_PORT>" \
--elevator-base-url "http://<ELEVATOR_HOST>:<ELEVATOR_PORT>" \
--meng-person-id "<MENG_HAI_WEN_PERSON_ID>" \
--visitor-person-id "<TEST_VISITOR_PERSON_ID>" \
--business-id "2524639890ba4f2cba9ba1a4eeaa4015" \
--probe-with-businessid
6. 报告与留痕
脚本输出:
- 控制台摘要(模式、三步状态、业务码、风险级别)
- 报告文件:
report/quick-verify-<timestamp>.json
建议归档:
- 本次执行命令
- 报告 JSON
- 对应时段接口日志摘录
- 最终分级(通过 / 预期拦截 / 高风险)