Class ActingClaims

java.lang.Object
io.leandev.appfuse.security.auth.ActingClaims

public final class ActingClaims extends Object

代理/模擬的 JWT claim wire 契約(見 ADR-013)。

兩個正交維度、無模式判別器:模擬性由 actor claim 是否存在表達、代理性由 grantors claim 是否非空表達,兩者彼此獨立、可自由共存於同一 token(如「A 模擬 B 且 B 被 C 指派代理」 → actor=A + grantors=[C] 並存)。是否共存完全由應用層政策決定,框架不設 act_mode、 不做預設、不仲裁「主模式」。

代理授權人、模擬者與有效身份一律以不可變的 subject 識別,對齊 JWT sub。 username 等顯示欄位由應用層 reference adapter 解析,框架 wire contract 不承載可變名稱。

簽發端(JwtTokenProvider.generateDelegationToken(UserDetails, List, Map)JwtTokenProvider.generateImpersonationToken(UserDetails, String, Map))與讀取端(ActingContext) 共用本類別的 claim 名稱與 map 組裝,確保 round-trip 對稱。因無模式 key,delegation(List)impersonation(String) 的產物可直接 merge 成同時帶兩維的 claim(無 key 衝突)。框架只定義 wire 契約與 token 組裝;啟用時機、閘門、授權/啟用記錄一律由應用層承擔。

  • Field Details

    • CLAIM_GRANTORS

      public static final String CLAIM_GRANTORS
      代理授權人集合 claim 名稱(值為 stable subject 字串陣列);非空即代表當前 token 具代理性
      See Also:
    • CLAIM_ACTOR

      public static final String CLAIM_ACTOR
      模擬者(真實操作者)claim 名稱(值為 stable subject 字串);存在即代表當前 token 具模擬性
      See Also:
    • CLAIM_SESSION_ID

      public static final String CLAIM_SESSION_ID
      Refresh Session family 與 Access Token family 的共同識別。
      See Also:
    • CLAIM_ACTING_POLICY

      public static final String CLAIM_ACTING_POLICY
      目前 acting family 綁定的應用政策識別(例如 standard/consent/break-glass)。
      See Also:
  • Method Details

    • delegation

      public static Map<String,Object> delegation(List<String> grantors)

      組出代理維度的 claim:grantors=[subject, …]

      可與 impersonation(String) 的產物 merge,構成同時帶模擬與代理兩維的 token。

      Parameters:
      grantors - 代理授權人 stable subject 集合(至少一筆非空)
      Returns:
      供併入 JWT 的 claim map
      Throws:
      IllegalArgumentException - 當 grantors 為空或全為空白
    • impersonation

      public static Map<String,Object> impersonation(String actor)

      組出模擬維度的 claim:actor=subject

      可與 delegation(List) 的產物 merge,構成同時帶模擬與代理兩維的 token。

      Parameters:
      actor - 真實操作者(模擬者)的 stable subject
      Returns:
      供併入 JWT 的 claim map
      Throws:
      IllegalArgumentException - 當 actor 為空