Serializacja niestandardowej pamięci podręcznej tokenów w bibliotece MSAL dla języka Java

Aby zachować pamięć podręczną tokenu między wystąpieniami aplikacji, należy dostosować logikę serializacji. Klasy i interfejsy Java związane z serializacją pamięci podręcznej tokenów to:

  • ITokenCache: Interfejs reprezentujący pamięć podręczną tokenu zabezpieczającego.
  • ITokenCacheAccessAspect : interfejs reprezentujący operację wykonywania kodu przed dostępem i po nim. @Override beforeCacheAccess i afterCacheAccess należy uzupełnić o logikę odpowiedzialną za serializację i deserializację pamięci podręcznej.
  • ITokenCacheAccessContext : interfejs reprezentujący kontekst, w którym uzyskuje się dostęp do pamięci podręcznej tokenów.

Poniżej przedstawiono prostą implementację niestandardowej serializacji pamięci podręcznej tokenów.

Warning

Ponieważ poniższy przykładowy kod nie prezentuje pełnego cyklu życia magazynu pamięci podręcznej, zdecydowanie zalecamy, aby nie kopiować i wklejać go w środowisku produkcyjnym. Upewnij się, że masz świadomość wymagań dotyczących zabezpieczeń i dostępu dla pamięci podręcznej tokenów.

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

Dowiedz się więcej o pobieraniu i usuwaniu kont z pamięci podręcznej tokenów przy użyciu biblioteki MSAL dla Java.