Interface RefreshSessionStore
public interface RefreshSessionStore
Refresh Session persistence SPI。
框架只定義 session family 的資料與 credential-use/compare-and-rotate/revoke 契約,不綁定 JPA、Redis
或特定租戶模型。實作的 use(RefreshSessionStore.CredentialUse)、rotate(RefreshSessionStore.Rotation) 與 revoke(UUID, Instant, String) 必須各自在單一原子操作中鎖定或比較版本;
不得以「先讀、無條件寫」讓同一 generation 成功兩次。
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic final record供 identity switch 等會立即替換或撤銷 family 的流程,原子驗證 credential 並滑動 idle window。 同一 credential 的並行使用可依序成功;logout/expiry/rotation 與本操作以相同 row lock 排序。static final recordstatic final recordstatic enumstatic interfacestatic final recordstatic enumstatic final recordstatic final recordcompare-and-rotate command。expectedGeneration與currentCredentialHash必須同時吻合。static final recordstatic enumstatic interfacestatic final record -
Method Summary
Modifier and TypeMethodDescriptiondefault Optional<RefreshSessionStore.Session> activatePending(String credentialHash, String context, String app, Instant now) 一次性啟用待交接 family。須原子比對 hash、context、app、期限及撤銷狀態, 成功清除 pending。既有 adapter 預設拒絕,不得降級成一般 refresh。default Set<SessionStoreCapability> voidcreate(RefreshSessionStore.NewSession session) intdeleteExpired(Instant now) findByCredentialHash(String credentialHash) findByCredentialSelectorHash(String credentialSelectorHash) 以秘密 selector 找 family,讓已輪替 verifier 仍可被辨識為 replay。default Optional<RefreshSessionStore.Session> findBySessionId(UUID sessionId) 以 family ID 讀取 authoritative 狀態;舊 adapter 必須明示不支援,不能誤認為不存在。revokeByPolicy(String policy, String reference, Instant revokedAt, String reason) 依應用政策綁定撤銷 family,供 consent 等外部授權被撤回時主動失效既有 Session。revokeByPrincipal(String subject, Instant at, String reason) 撤銷 subject 或 actorSubject 相符的所有既有 family;不禁止之後以新 proof 登入。rotate(RefreshSessionStore.Rotation rotation) use(RefreshSessionStore.CredentialUse credentialUse)
-
Method Details
-
capabilities
-
revokeByPrincipal
-
create
-
findByCredentialHash
-
findByCredentialSelectorHash
以秘密 selector 找 family,讓已輪替 verifier 仍可被辨識為 replay。 -
findBySessionId
以 family ID 讀取 authoritative 狀態;舊 adapter 必須明示不支援,不能誤認為不存在。 -
use
-
rotate
-
revoke
-
revokeByPolicy
-
activatePending
-
deleteExpired
-