Serialisierung des benutzerdefinierten Tokencaches in MSAL für Java

Um den Tokencache zwischen Instanzen Ihrer Anwendung beizubehalten, müssen Sie die Serialisierungslogik anpassen. Die Java Klassen und Schnittstellen, die an der Serialisierung des Tokencaches beteiligt sind, sind die folgenden:

  • ITokenCache: Schnittstelle, die den Sicherheitstokencache darstellt.
  • ITokenCacheAccessAspect : Schnittstelle, die den Vorgang des Ausführens von Code vor und nach dem Zugriff darstellt. Sie würden @OverridebeforeCacheAccess und afterCacheAccess mit der Logik versehen, die für die Serialisierung und Deserialisierung des Cache verantwortlich ist.
  • ITokenCacheAccessContext : Schnittstelle, die den Kontext darstellt, in dem auf den Tokencache zugegriffen wird.

Nachfolgend finden Sie eine naive Implementierung der benutzerdefinierten Serialisierung des Tokencaches.

Warning

Da der folgende Beispielcode den vollständigen Cachespeicherlebenszyklus nicht zeigt, wird dringend empfohlen, dies nicht zu kopieren und in eine Produktionsumgebung einzufügen. Stellen Sie sicher, dass Sie die Sicherheits- und Zugriffsanforderungen für den Tokencache kennen.

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

Weitere Informationen

Erfahren Sie mehr über das Abrufen und Entfernen von Konten aus dem Tokencache mithilfe von MSAL für Java.