Class FileSystemSecurityRealm

java.lang.Object
org.wildfly.security.auth.realm.FileSystemSecurityRealm
All Implemented Interfaces:
CacheableSecurityRealm, org.wildfly.security.auth.server.ModifiableSecurityRealm, org.wildfly.security.auth.server.SecurityRealm

public final class FileSystemSecurityRealm extends Object implements org.wildfly.security.auth.server.ModifiableSecurityRealm, CacheableSecurityRealm
A simple filesystem-backed security realm.
Author:
David M. Lloyd
  • Constructor Details

    • FileSystemSecurityRealm

      public FileSystemSecurityRealm(Path root, org.wildfly.security.auth.server.NameRewriter nameRewriter, int levels, boolean encoded, org.wildfly.security.password.spec.Encoding hashEncoding, Charset hashCharset, Supplier<Provider[]> providers, SecretKey secretKey, PrivateKey privateKey, PublicKey publicKey)
      Construct a new instance. Construction with enabled security manager requires createSecurityRealm ElytronPermission.
      Parameters:
      root - the root path of the identity store
      nameRewriter - the name rewriter to apply to looked up names
      levels - the number of levels of directory hashing to apply
      encoded - whether identity names should be BASE32 encoded before using as filename (only applies if the security realm is unencrypted)
      hashEncoding - the string format for the 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.
      providers - The providers supplier
      secretKey - the SecretKey used to encrypt and decrypt the security realm (if null, the security realm will be unencrypted)
      privateKey - the PrivateKey used to verify the integrity of the security realm (if null, the security realm will not verify integrity)
      publicKey - the PublicKey used to verify the integrity of the security realm (if null, the security realm will not verify integrity)
    • FileSystemSecurityRealm

      public FileSystemSecurityRealm(Path root, org.wildfly.security.auth.server.NameRewriter nameRewriter, int levels, boolean encoded, org.wildfly.security.password.spec.Encoding hashEncoding, Charset hashCharset, SecretKey secretKey)
      Construct a new instance. Construction with enabled security manager requires createSecurityRealm ElytronPermission.
      Parameters:
      root - the root path of the identity store
      nameRewriter - the name rewriter to apply to looked up names
      levels - the number of levels of directory hashing to apply
      encoded - whether identity names should be BASE32 encoded before using as filename
      hashEncoding - the string format for the 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.
      secretKey - the SecretKey used to encrypt and decrypt the security realm (if null, the security realm will be unencrypted)
    • FileSystemSecurityRealm

      public FileSystemSecurityRealm(Path root, org.wildfly.security.auth.server.NameRewriter nameRewriter, int levels, boolean encoded, org.wildfly.security.password.spec.Encoding hashEncoding, Charset hashCharset)
      Construct a new instance. Construction with enabled security manager requires createSecurityRealm ElytronPermission.
      Parameters:
      root - the root path of the identity store
      nameRewriter - the name rewriter to apply to looked up names
      levels - the number of levels of directory hashing to apply
      encoded - whether identity names should be BASE32 encoded before using as filename
      hashEncoding - the string format for the 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.
    • FileSystemSecurityRealm

      public FileSystemSecurityRealm(Path root, org.wildfly.security.auth.server.NameRewriter nameRewriter, int levels, boolean encoded)
      Construct a new instance. Construction with enabled security manager requires createSecurityRealm ElytronPermission.
      Parameters:
      root - the root path of the identity store
      nameRewriter - the name rewriter to apply to looked up names
      levels - the number of levels of directory hashing to apply
      encoded - whether identity names should by BASE32 encoded before using as filename
    • FileSystemSecurityRealm

      public FileSystemSecurityRealm(Path root, org.wildfly.security.auth.server.NameRewriter nameRewriter, int levels)
      Construct a new instance.
      Parameters:
      root - the root path of the identity store
      nameRewriter - the name rewriter to apply to looked up names
      levels - the number of levels of directory hashing to apply
    • FileSystemSecurityRealm

      public FileSystemSecurityRealm(Path root, org.wildfly.security.auth.server.NameRewriter nameRewriter, int levels, org.wildfly.security.password.spec.Encoding hashEncoding, Charset hashCharset)
      Construct a new instance.
      Parameters:
      root - the root path of the identity store
      nameRewriter - the name rewriter to apply to looked up names
      levels - the number of levels of directory hashing to apply
      hashEncoding - 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 be null.
    • FileSystemSecurityRealm

      public FileSystemSecurityRealm(Path root, int levels)
      Construct a new instance.
      Parameters:
      root - the root path of the identity store
      levels - the number of levels of directory hashing to apply
    • FileSystemSecurityRealm

      public FileSystemSecurityRealm(Path root, int levels, org.wildfly.security.password.spec.Encoding hashEncoding, Charset hashCharset)
      Construct a new instance.
      Parameters:
      root - the root path of the identity store
      levels - the number of levels of directory hashing to apply
      hashEncoding - 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 be null.
    • FileSystemSecurityRealm

      public FileSystemSecurityRealm(Path root)
      Construct a new instance with 2 levels of hashing.
      Parameters:
      root - the root path of the identity store
    • FileSystemSecurityRealm

      public FileSystemSecurityRealm(Path root, org.wildfly.security.password.spec.Encoding hashEncoding, Charset hashCharset)
      Construct a new instance with 2 levels of hashing.
      Parameters:
      root - the root path of the identity store
      hashEncoding - 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 be null
    • FileSystemSecurityRealm

      public FileSystemSecurityRealm(Path root, int levels, Supplier<Provider[]> providers)
  • Method Details

    • builder

      public static FileSystemSecurityRealmBuilder 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:
      true if Integrity checking is enabled, and false otherwise
    • getHashCharset

      public Charset getHashCharset()
    • getRealmIdentity

      public org.wildfly.security.auth.server.RealmIdentity getRealmIdentity(Principal principal)
      Specified by:
      getRealmIdentity in interface org.wildfly.security.auth.server.SecurityRealm
    • getRealmIdentityForUpdate

      public org.wildfly.security.auth.server.ModifiableRealmIdentity getRealmIdentityForUpdate(Principal principal)
      Specified by:
      getRealmIdentityForUpdate in interface org.wildfly.security.auth.server.ModifiableSecurityRealm
    • registerIdentityChangeListener

      public void registerIdentityChangeListener(Consumer<Principal> listener)
      Description copied from interface: CacheableSecurityRealm
      Register a listener that should be invoked by this realm in order to notify the caching layer about changes to a specific identity.
      Specified by:
      registerIdentityChangeListener in interface CacheableSecurityRealm
      Parameters:
      listener - the listener
    • getRealmIdentityIterator

      public org.wildfly.security.auth.server.ModifiableRealmIdentityIterator getRealmIdentityIterator() throws org.wildfly.security.auth.server.RealmUnavailableException
      Specified by:
      getRealmIdentityIterator in interface org.wildfly.security.auth.server.ModifiableSecurityRealm
      Throws:
      org.wildfly.security.auth.server.RealmUnavailableException
    • getCredentialAcquireSupport

      public org.wildfly.security.auth.SupportLevel getCredentialAcquireSupport(Class<? extends org.wildfly.security.credential.Credential> credentialType, String algorithmName, AlgorithmParameterSpec parameterSpec) throws org.wildfly.security.auth.server.RealmUnavailableException
      Specified by:
      getCredentialAcquireSupport in interface org.wildfly.security.auth.server.SecurityRealm
      Throws:
      org.wildfly.security.auth.server.RealmUnavailableException
    • getEvidenceVerifySupport

      public org.wildfly.security.auth.SupportLevel getEvidenceVerifySupport(Class<? extends org.wildfly.security.evidence.Evidence> evidenceType, String algorithmName) throws org.wildfly.security.auth.server.RealmUnavailableException
      Specified by:
      getEvidenceVerifySupport in interface org.wildfly.security.auth.server.SecurityRealm
      Throws:
      org.wildfly.security.auth.server.RealmUnavailableException
    • updateRealmKeyPair

      public void updateRealmKeyPair() throws org.wildfly.security.auth.server.RealmUnavailableException
      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:
      org.wildfly.security.auth.server.RealmUnavailableException - if the realm is not able to handle requests for any reason
    • verifyRealmIntegrity

      public FileSystemSecurityRealm.IntegrityResult verifyRealmIntegrity() throws org.wildfly.security.auth.server.RealmUnavailableException
      Verify the integrity of each identity file in this realm.
      Returns:
      true if the integrity of all the identity files in the realm is successfully verified and false otherwise
      Throws:
      org.wildfly.security.auth.server.RealmUnavailableException