Package org.wildfly.security.auth.realm
Class CachingSecurityRealm
- java.lang.Object
-
- org.wildfly.security.auth.realm.CachingSecurityRealm
-
- All Implemented Interfaces:
SecurityRealm
- Direct Known Subclasses:
CachingModifiableSecurityRealm
public class CachingSecurityRealm extends Object implements SecurityRealm
A wrapper class that provides caching capabilities for a
SecurityRealmand its identities.- Author:
- Pedro Igor
-
-
Field Summary
Fields Modifier and Type Field Description private RealmIdentityCachecacheprivate Supplier<Provider[]>providerSupplierprivate SecurityRealmrealm-
Fields inherited from interface org.wildfly.security.auth.server.SecurityRealm
EMPTY_REALM
-
-
Constructor Summary
Constructors Constructor Description CachingSecurityRealm(SecurityRealm realm, RealmIdentityCache cache)Creates a new instance.CachingSecurityRealm(SecurityRealm realm, RealmIdentityCache cache, Supplier<Provider[]> providerSupplier)Creates a new instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected SecurityRealmgetCacheableRealm()Gets wrapped backing realm.SupportLevelgetCredentialAcquireSupport(Class<? extends Credential> credentialType, String algorithmName, AlgorithmParameterSpec parameterSpec)Determine whether a credential of the given type and algorithm is definitely obtainable, possibly obtainable (for] some identities), or definitely not obtainable.SupportLevelgetEvidenceVerifySupport(Class<? extends Evidence> evidenceType, String algorithmName)Determine whether a given type of evidence is definitely verifiable, possibly verifiable (for some identities), or definitely not verifiable.RealmIdentitygetRealmIdentity(Principal principal)Get a handle for to the identity for the given principal in the context of this security realm.voidhandleRealmEvent(RealmEvent event)Handle a realm event.voidremoveAllFromCache()Removes all cached identities from the cache.voidremoveFromCache(Principal principal)Removes aRealmIdentityreferenced by the specifiedPrincipalfrom the cache.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.wildfly.security.auth.server.SecurityRealm
getCredentialAcquireSupport, getRealmIdentity, getRealmIdentity
-
-
-
-
Field Detail
-
realm
private final SecurityRealm realm
-
cache
private final RealmIdentityCache cache
-
-
Constructor Detail
-
CachingSecurityRealm
public CachingSecurityRealm(SecurityRealm realm, RealmIdentityCache cache)
Creates a new instance.- Parameters:
realm- theSecurityRealmwhoseRealmIdentityshould be cached.cache- theRealmIdentityCacheinstance
-
CachingSecurityRealm
public CachingSecurityRealm(SecurityRealm realm, RealmIdentityCache cache, Supplier<Provider[]> providerSupplier)
Creates a new instance.- Parameters:
realm- theSecurityRealmwhoseRealmIdentityshould be cached.cache- theRealmIdentityCacheinstanceproviderSupplier- the provider supplier to use for verification purposes (must not benull)
-
-
Method Detail
-
getRealmIdentity
public RealmIdentity getRealmIdentity(Principal principal) throws RealmUnavailableException
Description copied from interface:SecurityRealmGet a handle for to the identity for the given principal in the context of this security realm. Any validation / name mapping is an implementation detail for the realm. The identity may or may not exist. The returned handle must be cleaned up by a call toRealmIdentity.dispose().- Specified by:
getRealmIdentityin interfaceSecurityRealm- Parameters:
principal- the principal which identifies the identity within the realm (must not benull)- Returns:
- the
RealmIdentityfor the provided principal (notnull) - Throws:
RealmUnavailableException
-
getCredentialAcquireSupport
public SupportLevel getCredentialAcquireSupport(Class<? extends Credential> credentialType, String algorithmName, AlgorithmParameterSpec parameterSpec) throws RealmUnavailableException
Description copied from interface:SecurityRealmDetermine whether a credential of the given type and algorithm is definitely obtainable, possibly obtainable (for] some identities), or definitely not obtainable.- Specified by:
getCredentialAcquireSupportin interfaceSecurityRealm- Parameters:
credentialType- the exact credential type (must not benull)algorithmName- the algorithm name, ornullif any algorithm is acceptable or the credential type does not support algorithm namesparameterSpec- the algorithm parameters to match, ornullif any parameters are acceptable or the credential type does not support algorithm parameters- Returns:
- the level of support for this credential
- Throws:
RealmUnavailableException- if the realm is not able to handle requests for any reason
-
getEvidenceVerifySupport
public SupportLevel getEvidenceVerifySupport(Class<? extends Evidence> evidenceType, String algorithmName) throws RealmUnavailableException
Description copied from interface:SecurityRealmDetermine whether a given type of evidence is definitely verifiable, possibly verifiable (for some identities), or definitely not verifiable.- Specified by:
getEvidenceVerifySupportin interfaceSecurityRealm- Parameters:
evidenceType- the type of evidence to be verified (must not benull)algorithmName- the algorithm name, ornullif any algorithm is acceptable or the evidence type does not support algorithm names- Returns:
- the level of support for this evidence type
- Throws:
RealmUnavailableException- if the realm is not able to handle requests for any reason
-
handleRealmEvent
public void handleRealmEvent(RealmEvent event)
Description copied from interface:SecurityRealmHandle a realm event. These events allow the realm to act upon occurrences that are relevant to policy of the realm; for example, the realm may choose to increase password iteration count on authentication success, or change the salt of a password after a certain number of authentications.The default implementation does nothing.
- Specified by:
handleRealmEventin interfaceSecurityRealm- Parameters:
event- the realm event
-
removeFromCache
public void removeFromCache(Principal principal)
Removes aRealmIdentityreferenced by the specifiedPrincipalfrom the cache.- Parameters:
principal- thePrincipalthat references a previously cached realm identity
-
removeAllFromCache
public void removeAllFromCache()
Removes all cached identities from the cache.
-
getCacheableRealm
protected SecurityRealm getCacheableRealm()
Gets wrapped backing realm.- Returns:
- the wrapped backing realm
-
-