Class SignedLinkService
java.lang.Object
io.leandev.appfuse.security.link.SignedLinkService
簽章連結原語
把「簽一張帶用途與導向目標的連結 token」與「驗章 + 依政策贖回」做成可復用的工具, 讓下游用它實作免密碼登入、事件通知深連結等「能收到該帳號 email 即可進入目標頁」的功能。
本原語租戶中性、不碰寄信、不認得 HTTP:只負責 issue(SignedLinkSpec) 鑄出簽章 token、consume(String)
驗章並回傳 SignedLinkToken。連結 URL 怎麼拼、信件主旨 / 內文、身分如何載入與 session
如何換發,全由消費端決定。
簽章重用 JWT(RSA),金鑰由建構子注入(可與 JwtTokenProvider 共用同一組金鑰);
簽出的是獨立用途的 token(帶 purpose / target / redemption 等 claim),與一般
session token 互不相通——消費端應另以 purpose 隔離不同用途的連結。
執行緒安全性:無可變狀態,執行緒安全(單次性由 SignedLinkStore 承擔)。
- Since:
- 1.0
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
-
Field Details
-
CLAIM_PURPOSE
-
CLAIM_TARGET
-
CLAIM_REDEMPTION
-
CLAIM_ATTRIBUTES
-
-
Constructor Details
-
SignedLinkService
public SignedLinkService()
-
-
Method Details
-
issue
簽發一張簽章連結 token
依
SignedLinkSpec.redemption:SINGLE_USE會額外將 jti 登記進SignedLinkStore(供consume(String)原子贖回);REUSABLE不碰 store。- Parameters:
spec- 簽發參數(subject/purpose/ttl必填;redemption缺省 SINGLE_USE)- Returns:
- 已簽章的 token 字串(消費端自行拼進連結 URL)
- Throws:
IllegalArgumentException- 若必填欄位缺漏或ttl非正
-
consume
驗章並贖回一張簽章連結 token
驗證簽章與有效期後,依 token 攜帶的政策:
SINGLE_USE會原子地消費 jti (已用過或逾期 → 丟例外);REUSABLE在有效期內可重複呼叫成功。- Parameters:
rawToken- 連結攜帶的 token 字串- Returns:
- 解析後的
SignedLinkToken - Throws:
VerificationException- 若簽章無效、已過期,或 SINGLE_USE 連結已被使用過
-