Java MSAL 中的自訂令牌快取序列化

為了在應用程式的實例間持久化令令牌快取,你需要自訂序列化邏輯。 代幣快取序列化涉及的 Java 類別與介面如下:

  • ITokenCache:表示安全性權杖快取的介面。
  • ITokenCacheAccessAspect :介面,代表存取前後執行程式碼的操作。 你會以負責將快取序列化和反序列化的邏輯來實作 @OverridebeforeCacheAccess 和 afterCacheAccess。
  • ITokenCacheAccessContext:表示存取權杖快取時內容的介面。

以下是一個簡單的自訂序列化代幣快取實作。

Warning

由於以下範例程式碼未完整呈現快取儲存生命週期,我們強烈建議不要將此複製貼上至生產環境。 務必了解令牌緩存的安全性與存取要求。

static class TokenPersistence implements ITokenCacheAccessAspect {
String data;

TokenPersistence(String data) {
        this.data = data;
}

@Override
public void beforeCacheAccess(ITokenCacheAccessContext iTokenCacheAccessContext) {
        iTokenCacheAccessContext.tokenCache().deserialize(data);
}

@Override
public void afterCacheAccess(ITokenCacheAccessContext iTokenCacheAccessContext) {
        data = iTokenCacheAccessContext.tokenCache().serialize();
}
// Loads cache from file
String dataToInitCache = readResource(this.getClass(), "/cache_data/serialized_cache.json");

ITokenCacheAccessAspect persistenceAspect = new TokenPersistence(dataToInitCache);

// By setting *TokenPersistence* on the PublicClientApplication, MSAL will call *beforeCacheAccess()* before accessing the cache and *afterCacheAccess()* after accessing the cache. 
PublicClientApplication app = 
PublicClientApplication.builder("my_client_id").setTokenCacheAccessAspect(persistenceAspect).build();

瞭解更多資訊

學習使用 MSAL for Java 從令牌快取中取得並移除帳號的方法。