Skip to content

影子模式

完全替换权限系统风险高。影子模式让你在不影响线上行为的前提下,观察 IAM 会如何决策,验证其规则是否与旧系统一致。

IAM 的授权核心是 AuthorizationEngine.decide(principal, request),它返回 AuthorizationDecision(allowed, decisionCode, steps)不强制拦截。因此可以把 IAM 放在旁路:对每个请求调用 decide(),记录其 decisionCodesteps(含 AuthorizationDecisionStep(code, passed, reason)),与旧系统结果对比,但不抛 AuthorizationDeniedException、不 deny。

  1. 接入 IdentityAuthenticator,让登录产出 IamPrincipal(见 数据投影)。
  2. 在现有拦截器/过滤器中调用 engine.decide(...),仅写日志或落库,不阻断。
  3. POST /iam/authorization/diagnostics 复核单条请求的预期决策。
  4. 差异收敛后,再切到 @RequirePermissionengine.require(...) 进入强制模式。