Serialisering av anpassad tokencache i MSAL för Java

Om du vill spara tokencachen mellan instanser av ditt program måste du anpassa serialiseringslogiken. De Java klasser och gränssnitt som ingår i tokencachens serialisering är följande:

  • ITokenCache: Gränssnitt som representerar cacheminne för säkerhetstoken.
  • ITokenCacheAccessAspect : Gränssnitt som representerar körning av kod före och efter åtkomst. Du skulle @OverrideföreCacheAccess och afterCacheAccess med logiken som ansvarar för serialisering och deserialisering av cacheminnet.
  • ITokenCacheAccessContext : Gränssnitt som representerar kontexten där tokencachen används.

Nedan visas en naiv implementering av anpassad serialisering av tokencachen.

Varning

Eftersom exempelkoden nedan inte visar hela livscykeln för cachelagring rekommenderar vi starkt att du inte kopierar och klistrar in den i en produktionsmiljö. Se till att du känner till kraven på säkerhet och åtkomst för tokencachen.

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();

Learn more

Läs mer om Att hämta och ta bort konton från tokencacheminnet med hjälp av MSAL för Java.