Package net.shibboleth.oidc.jwk
Class RemoteJwkSetCache
-
- All Implemented Interfaces:
Component,DestructableComponent,IdentifiableComponent,IdentifiedComponent,InitializableComponent
public class RemoteJwkSetCache extends AbstractIdentifiableInitializableComponent
Stores fetched remote key set values for a desired period of time.
-
-
Field Summary
Fields Modifier and Type Field Description static StringCONTEXT_NAMEThe context name in theStorageService.private org.apache.http.client.HttpClienthttpClientTheHttpClientto use.private HttpClientSecurityParametershttpClientSecurityParametersHTTP client security parameters.private org.slf4j.LoggerlogLogger.private StorageServicestorageBacking storage for the remote JWK set contents.
-
Constructor Summary
Constructors Constructor Description RemoteJwkSetCache()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voiddoInitialize()com.nimbusds.jose.jwk.JWKSetfetch(String context, URI uri, String keyId, Instant expires)Returns remote JWK set if found from the cache, otherwise fetches and stores it.com.nimbusds.jose.jwk.JWKSetfetch(String context, URI uri, Instant expires)Returns remote JWK set if found from the cache, otherwise fetches and stores it.com.nimbusds.jose.jwk.JWKSetfetch(URI uri, String keyId, Instant expires)Returns remote JWK set if found from the cache, otherwise fetches and stores it.com.nimbusds.jose.jwk.JWKSetfetch(URI uri, Instant expires)Returns remote JWK set if found from the cache, otherwise fetches and stores it.private com.nimbusds.jose.jwk.JWKSetfetchAndStore(String context, String cacheKey, URI uri, Instant expires)Fetches the remote JWK set from the given URI and stores it in the storage service.StorageServicegetStorage()Get the backing store for the remote JWK set contents.voidsetHttpClient(org.apache.http.client.HttpClient client)Set theHttpClientto use.voidsetHttpClientSecurityParameters(HttpClientSecurityParameters params)Set the optional client security parameters.voidsetStorage(StorageService storageService)Set the backing store for the remote JWK set contents.-
Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent
setId
-
Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractIdentifiedInitializableComponent
getId
-
Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
destroy, doDestroy, initialize, isDestroyed, isInitialized
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface net.shibboleth.utilities.java.support.component.IdentifiedComponent
getId
-
-
-
-
Field Detail
-
CONTEXT_NAME
public static final String CONTEXT_NAME
The context name in theStorageService.- See Also:
- Constant Field Values
-
log
private final org.slf4j.Logger log
Logger.
-
storage
private StorageService storage
Backing storage for the remote JWK set contents.
-
httpClient
@NonnullAfterInit private org.apache.http.client.HttpClient httpClient
TheHttpClientto use.
-
httpClientSecurityParameters
@Nullable private HttpClientSecurityParameters httpClientSecurityParameters
HTTP client security parameters.
-
-
Method Detail
-
getStorage
@NonnullAfterInit public StorageService getStorage()
Get the backing store for the remote JWK set contents.- Returns:
- the backing store.
-
setStorage
public void setStorage(@Nonnull StorageService storageService)Set the backing store for the remote JWK set contents.- Parameters:
storageService- backing store to use
-
setHttpClient
public void setHttpClient(@Nonnull org.apache.http.client.HttpClient client)Set theHttpClientto use.- Parameters:
client- client to use
-
setHttpClientSecurityParameters
public void setHttpClientSecurityParameters(@Nullable HttpClientSecurityParameters params)Set the optional client security parameters.- Parameters:
params- the new client security parameters
-
doInitialize
public void doInitialize() throws ComponentInitializationException- Overrides:
doInitializein classAbstractIdentifiedInitializableComponent- Throws:
ComponentInitializationException
-
fetch
public com.nimbusds.jose.jwk.JWKSet fetch(@Nonnull URI uri, @Nonnull String keyId, @Nonnull Instant expires)Returns remote JWK set if found from the cache, otherwise fetches and stores it. If the JWK set is from the cache check it contains the keyId and if not, refresh the JWK set in the cache. Uses the default CONTEXT_NAME. Delegates tofetch(String, URI, String, Instant)for the actual implementation.- Parameters:
uri- value to checkkeyId- the identifier of the key to check exists in a cached version of the keyset documentexpires- time for disposal of value from cache- Returns:
- JWK set, null if not found from the cache and cannot be fetched.
- Since:
- 2.2.0
-
fetch
public com.nimbusds.jose.jwk.JWKSet fetch(@Nonnull URI uri, @Nonnull Instant expires)Returns remote JWK set if found from the cache, otherwise fetches and stores it.- Parameters:
uri- value to checkexpires- time for disposal of value from cache- Returns:
- JWK set, null if not found from the cache and cannot be fetched.
-
fetch
@Nullable public com.nimbusds.jose.jwk.JWKSet fetch(@Nonnull @NotEmpty String context, @Nonnull URI uri, @Nonnull Instant expires)
Returns remote JWK set if found from the cache, otherwise fetches and stores it.- Parameters:
context- a context label to subdivide the cacheuri- value to checkexpires- time (in milliseconds since beginning of epoch) for disposal of value from cache- Returns:
- JWK set, null if not found from the cache and cannot be fetched.
-
fetchAndStore
@Nullable private com.nimbusds.jose.jwk.JWKSet fetchAndStore(@Nonnull @NotEmpty String context, @Nonnull String cacheKey, @Nonnull URI uri, @Nonnull Instant expires)
Fetches the remote JWK set from the given URI and stores it in the storage service.- Parameters:
context- a context label to subdivide the cachecacheKey- the key to store the JWK set under in the storage serviceuri- value to fetch the JWK set fromexpires- time (in milliseconds since beginning of epoch) for disposal of value from cache- Returns:
- the JWK set document if fetched successfully,
nullotherwise. - Since:
- 2.2.0
-
fetch
@Nullable public com.nimbusds.jose.jwk.JWKSet fetch(@Nonnull @NotEmpty String context, @Nonnull URI uri, @Nonnull String keyId, @Nonnull Instant expires)
Returns remote JWK set if found from the cache, otherwise fetches and stores it. If the JWK set is retrieved from the cache, checks it contains the JWK keyId input, if not it re-fetches the JWK set even if the set has not expired. This allows keys to be returned when the JWK Set has been updated but has not yet expired e.g. during key rotation.- Parameters:
context- a context label to subdivide the cacheuri- value to checkkeyId- the identifier of the key to check exists in a cached version of the keyset documentexpires- time (in milliseconds since beginning of epoch) for disposal of value from cache- Returns:
- JWK set, null if not found from the cache and cannot be fetched.
- Since:
- 2.2.0
-
-