Class OutageTolerantJWKSetSource<C extends SecurityContext>

java.lang.Object
com.nimbusds.jose.jwk.source.JWKSetSourceWrapper<C>
com.nimbusds.jose.jwk.source.OutageTolerantJWKSetSource<C>
All Implemented Interfaces:
JWKSetSource<C>, Closeable, AutoCloseable

@ThreadSafe public class OutageTolerantJWKSetSource<C extends SecurityContext> extends JWKSetSourceWrapper<C>
JWKSetSource with outage tolerance to handle temporary network issues and endpoint downtime, potentially running into minutes or hours. Transparently caches the JWK set provided by the wrapped JWKSetSource, returning it in case the underlying source throws a JWKSetUnavailableException.
Version:
2022-11-22
Author:
Thomas Rørvik Skjølberg, Vladimir Dzhuvinov
  • Constructor Details

    • OutageTolerantJWKSetSource

      public OutageTolerantJWKSetSource(JWKSetSource<C> source, long timeToLive, EventListener<OutageTolerantJWKSetSource<C>,C> eventListener)
      Creates a new outage tolerant JWK set source.
      Parameters:
      source - The JWK set source to decorate. Must not be null.
      timeToLive - The time to live of the cached JWK set to cover outages, in milliseconds.
      eventListener - The event listener, null if not specified.
  • Method Details

    • getJWKSet

      public JWKSet getJWKSet(JWKSetCacheRefreshEvaluator refreshEvaluator, long currentTime, C context) throws KeySourceException
      Description copied from interface: JWKSetSource
      Gets the JWK set.
      Parameters:
      refreshEvaluator - Controls whether refresh of the JWK set cache (if utilised by the source) is required.
      currentTime - The current time, in milliseconds since the Unix epoch.
      context - Optional context, null if not required.
      Returns:
      The JWK set.
      Throws:
      KeySourceException - If JWK set retrieval failed.
    • getTimeToLive

      public long getTimeToLive()
      Returns the time to live of the cached JWK set.
      Returns:
      The time to live, in milliseconds.