Serialisatie van aangepaste tokencache in MSAL voor Java

Als u de tokencache tussen exemplaren van uw toepassing wilt behouden, moet u de serialisatielogica aanpassen. De Java klassen en interfaces die betrokken zijn bij serialisatie van tokencaches zijn de volgende:

  • ITokenCache: Interface die de beveiligingstokencache vertegenwoordigt.
  • ITokenCacheAccessAspect : Interface die de werking van het uitvoeren van code vóór en na toegang vertegenwoordigt. U zou @OverridevóórCacheAccess en afterCacheAccess de logica gebruiken die verantwoordelijk is voor het serialiseren en deserialiseren van de cache.
  • ITokenCacheAccessContext : Interface die de context vertegenwoordigt waarin de tokencache wordt geopend.

Hieronder ziet u een naïeve implementatie van aangepaste serialisatie van de tokencache.

Warning

Omdat de onderstaande voorbeeldcode niet de volledige levenscyclus van de cacheopslag laat zien, wordt u ten zeerste aangeraden deze niet te kopiëren en in een productieomgeving te plakken. Zorg ervoor dat u op de hoogte bent van de beveiligings- en toegangsvereisten voor de tokencache.

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

Meer informatie

Meer informatie over het ophalen en verwijderen van accounts uit de tokencache met behulp van MSAL voor Java.