Package org.wildfly.security.auth.realm
Class FileSystemSecurityRealm
java.lang.Object
org.wildfly.security.auth.realm.FileSystemSecurityRealm
- All Implemented Interfaces:
CacheableSecurityRealm,ModifiableSecurityRealm,SecurityRealm
public final class FileSystemSecurityRealm
extends Object
implements ModifiableSecurityRealm, CacheableSecurityRealm
A simple filesystem-backed security realm.
- Author:
- David M. Lloyd
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classprotected static final class -
Field Summary
Fields inherited from interface org.wildfly.security.auth.server.SecurityRealm
EMPTY_REALM -
Constructor Summary
ConstructorsConstructorDescriptionFileSystemSecurityRealm(Path root) Construct a new instance with 2 levels of hashing.FileSystemSecurityRealm(Path root, int levels) Construct a new instance.FileSystemSecurityRealm(Path root, int levels, Supplier<Provider[]> providers) FileSystemSecurityRealm(Path root, int levels, Encoding hashEncoding, Charset hashCharset) Construct a new instance.FileSystemSecurityRealm(Path root, NameRewriter nameRewriter, int levels) Construct a new instance.FileSystemSecurityRealm(Path root, NameRewriter nameRewriter, int levels, boolean encoded) Construct a new instance.FileSystemSecurityRealm(Path root, NameRewriter nameRewriter, int levels, boolean encoded, Encoding hashEncoding, Charset hashCharset) Construct a new instance.FileSystemSecurityRealm(Path root, NameRewriter nameRewriter, int levels, boolean encoded, Encoding hashEncoding, Charset hashCharset, Supplier<Provider[]> providers, SecretKey secretKey, PrivateKey privateKey, PublicKey publicKey) Construct a new instance.FileSystemSecurityRealm(Path root, NameRewriter nameRewriter, int levels, boolean encoded, Encoding hashEncoding, Charset hashCharset, SecretKey secretKey) Construct a new instance.FileSystemSecurityRealm(Path root, NameRewriter nameRewriter, int levels, Encoding hashEncoding, Charset hashCharset) Construct a new instance.FileSystemSecurityRealm(Path root, Encoding hashEncoding, Charset hashCharset) Construct a new instance with 2 levels of hashing. -
Method Summary
Modifier and TypeMethodDescriptionbuilder()Construct a new instance of the FileSystemSecurityRealmBuilder.getCredentialAcquireSupport(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.getEvidenceVerifySupport(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.getRealmIdentity(Principal principal) Get a handle for to the identity for the given principal in the context of this security realm.getRealmIdentityForUpdate(Principal principal) Get an update handle for to the identity for the given principal in the context of this security realm.Get an iterator over all of this realm's identities.booleanChecks if the FileSystemSecurityRealm has Integrity checking enabledvoidregisterIdentityChangeListener(Consumer<Principal> listener) Register a listener that should be invoked by this realm in order to notify the caching layer about changes to a specific identity.voidRe-generate the signatures for all the identities in this realm.Verify the integrity of each identity file in this realm.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.wildfly.security.auth.server.ModifiableSecurityRealm
getRealmIdentityForUpdateMethods inherited from interface org.wildfly.security.auth.server.SecurityRealm
getCredentialAcquireSupport, getRealmIdentity, getRealmIdentity, handleRealmEvent
-
Constructor Details
-
FileSystemSecurityRealm
public FileSystemSecurityRealm(Path root, NameRewriter nameRewriter, int levels, boolean encoded, Encoding hashEncoding, Charset hashCharset, Supplier<Provider[]> providers, SecretKey secretKey, PrivateKey privateKey, PublicKey publicKey) Construct a new instance. Construction with enabled security manager requirescreateSecurityRealmElytronPermission.- Parameters:
root- the root path of the identity storenameRewriter- the name rewriter to apply to looked up nameslevels- the number of levels of directory hashing to applyencoded- whether identity names should be BASE32 encoded before using as filename (only applies if the security realm is unencrypted)hashCharset- the character set to use when converting password strings to a byte array. Uses UTF-8 by default.hashEncoding- the string format for the hashed passwords. Uses Base64 by default.providers- The providers suppliersecretKey- the SecretKey used to encrypt and decrypt the security realm (ifnull, the security realm will be unencrypted)privateKey- the PrivateKey used to verify the integrity of the security realm (ifnull, the security realm will not verify integrity)publicKey- the PublicKey used to verify the integrity of the security realm (ifnull, the security realm will not verify integrity)
-
FileSystemSecurityRealm
public FileSystemSecurityRealm(Path root, NameRewriter nameRewriter, int levels, boolean encoded, Encoding hashEncoding, Charset hashCharset, SecretKey secretKey) Construct a new instance. Construction with enabled security manager requirescreateSecurityRealmElytronPermission.- Parameters:
root- the root path of the identity storenameRewriter- the name rewriter to apply to looked up nameslevels- the number of levels of directory hashing to applyencoded- whether identity names should be BASE32 encoded before using as filenamehashCharset- the character set to use when converting password strings to a byte array. Uses UTF-8 by default.hashEncoding- the string format for the hashed passwords. Uses Base64 by default.secretKey- the SecretKey used to encrypt and decrypt the security realm (ifnull, the security realm will be unencrypted)
-
FileSystemSecurityRealm
public FileSystemSecurityRealm(Path root, NameRewriter nameRewriter, int levels, boolean encoded, Encoding hashEncoding, Charset hashCharset) Construct a new instance. Construction with enabled security manager requirescreateSecurityRealmElytronPermission.- Parameters:
root- the root path of the identity storenameRewriter- the name rewriter to apply to looked up nameslevels- the number of levels of directory hashing to applyencoded- whether identity names should be BASE32 encoded before using as filenamehashCharset- the character set to use when converting password strings to a byte array. Uses UTF-8 by default.hashEncoding- the string format for the hashed passwords. Uses Base64 by default.
-
FileSystemSecurityRealm
Construct a new instance. Construction with enabled security manager requirescreateSecurityRealmElytronPermission.- Parameters:
root- the root path of the identity storenameRewriter- the name rewriter to apply to looked up nameslevels- the number of levels of directory hashing to applyencoded- whether identity names should by BASE32 encoded before using as filename
-
FileSystemSecurityRealm
Construct a new instance.- Parameters:
root- the root path of the identity storenameRewriter- the name rewriter to apply to looked up nameslevels- the number of levels of directory hashing to apply
-
FileSystemSecurityRealm
public FileSystemSecurityRealm(Path root, NameRewriter nameRewriter, int levels, Encoding hashEncoding, Charset hashCharset) Construct a new instance.- Parameters:
root- the root path of the identity storenameRewriter- the name rewriter to apply to looked up nameslevels- the number of levels of directory hashing to applyhashEncoding- the string format for hashed passwords. Uses Base64 by default.hashCharset- the character set to use when converting password strings to a byte array. Uses UTF-8 by default and must not benull.
-
FileSystemSecurityRealm
Construct a new instance.- Parameters:
root- the root path of the identity storelevels- the number of levels of directory hashing to apply
-
FileSystemSecurityRealm
Construct a new instance.- Parameters:
root- the root path of the identity storelevels- the number of levels of directory hashing to applyhashEncoding- the string format for hashed passwords. Uses Base64 by default.hashCharset- the character set to use when converting password strings to a byte array. Uses UTF-8 by default and must not benull.
-
FileSystemSecurityRealm
Construct a new instance with 2 levels of hashing.- Parameters:
root- the root path of the identity store
-
FileSystemSecurityRealm
Construct a new instance with 2 levels of hashing.- Parameters:
root- the root path of the identity storehashEncoding- the string format for hashed passwords. Uses Base64 by default.hashCharset- the character set to use when converting password strings to a byte array. Uses UTF-8 by default and must not benull
-
FileSystemSecurityRealm
-
-
Method Details
-
builder
Construct a new instance of the FileSystemSecurityRealmBuilder.- Returns:
- the new FileSystemSecurityRealmBuilder instance
-
hasIntegrityEnabled
public boolean hasIntegrityEnabled()Checks if the FileSystemSecurityRealm has Integrity checking enabled- Returns:
trueif Integrity checking is enabled, andfalseotherwise
-
getHashCharset
-
getRealmIdentity
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)
-
getRealmIdentityForUpdate
Description copied from interface:ModifiableSecurityRealmGet an update 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(). During the lifespan of aModifiableRealmIdentity, no other updates or authentications may take place for the corresponding realm identity, thus care should be taken to minimize the duration of the identity's lifespan.If there is not enough information to locate an identity compatible with this realm,
ModifiableRealmIdentity.NON_EXISTENTmay be returned.- Specified by:
getRealmIdentityForUpdatein interfaceModifiableSecurityRealm- Parameters:
principal- the principal to use to locate theModifiableRealmIdentityhandle (must not benull)- Returns:
- the
ModifiableRealmIdentityfor the provided information (notnull)
-
registerIdentityChangeListener
Description copied from interface:CacheableSecurityRealmRegister a listener that should be invoked by this realm in order to notify the caching layer about changes to a specific identity.- Specified by:
registerIdentityChangeListenerin interfaceCacheableSecurityRealm- Parameters:
listener- the listener
-
getRealmIdentityIterator
Description copied from interface:ModifiableSecurityRealmGet an iterator over all of this realm's identities.- Specified by:
getRealmIdentityIteratorin interfaceModifiableSecurityRealm- Returns:
- the identity iterator
- Throws:
RealmUnavailableException- if the realm fails for some reason
-
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
-
updateRealmKeyPair
Re-generate the signatures for all the identities in this realm. This method is intended to be called after updating the key pair used by this realm.- Throws:
RealmUnavailableException- if the realm is not able to handle requests for any reason
-
verifyRealmIntegrity
public FileSystemSecurityRealm.IntegrityResult verifyRealmIntegrity() throws RealmUnavailableExceptionVerify the integrity of each identity file in this realm.- Returns:
trueif the integrity of all the identity files in the realm is successfully verified andfalseotherwise- Throws:
RealmUnavailableException
-