影子模式
解决什么问题
Section titled “解决什么问题”完全替换权限系统风险高。影子模式让你在不影响线上行为的前提下,观察 IAM 会如何决策,验证其规则是否与旧系统一致。
IAM 的授权核心是 AuthorizationEngine.decide(principal, request),它返回 AuthorizationDecision(allowed, decisionCode, steps) 而不强制拦截。因此可以把 IAM 放在旁路:对每个请求调用 decide(),记录其 decisionCode 与 steps(含 AuthorizationDecisionStep(code, passed, reason)),与旧系统结果对比,但不抛 AuthorizationDeniedException、不 deny。
- 接入
IdentityAuthenticator,让登录产出IamPrincipal(见 数据投影)。 - 在现有拦截器/过滤器中调用
engine.decide(...),仅写日志或落库,不阻断。 - 用
POST /iam/authorization/diagnostics复核单条请求的预期决策。 - 差异收敛后,再切到
@RequirePermission或engine.require(...)进入强制模式。