Repository: quarkusio/quarkus
Issue: Cannot use runtime quarkus.security.users.file.* config

**Describe the bug**
I have successfully setup quarkus.security.users.file.* (enabled, users, roles, realm-name) config but the only place where I can have it to work is inside the application.properties file. I think this whould be overridable at startup using java -Dquarkus.security...... options.

**Expected behavior**
These configuration properties are marked as "Configuration property fixed at build time" in the Quarkus all-config page but in my opinion, this should be overridableat runtime, and my users / groups / passwords files could be generated by the people I distribute the app to, I would not be forced to ask them for their passwords / hashes/ users, in order to build them in.

**Actual behavior**
Configuration properties not being taken into account at startup


**To Reproduce**
Steps to reproduce the behavior:
1. Use 
quarkus.security.users.file.enabled=true
In application.properties 
2. Launch the app using 
3. Get an exception : 
java.lang.IllegalStateException: No PropertiesRealmConfig users/roles settings found. Configure the quarkus.security.file.{enabled,users,roles,authMechanism,realmName} properties
at io.quarkus.elytron.security.runtime.ElytronPropertiesFileRecorder$1.run(ElytronPropertiesFileRecorder.java:68)
at io.quarkus.elytron.security.runtime.ElytronRecorder.runLoadTask(ElytronRecorder.java:31)
at io.quarkus.deployment.steps.ElytronDeploymentProcessor$loadRealm15.deploy_0(ElytronDeploymentProcessor$loadRealm15.zig:70)
at io.quarkus.deployment.steps.ElytronDeploymentProcessor$loadRealm15.deploy(ElytronDeploymentProcessor$loadRealm15.zig:36)
at io.quarkus.runner.ApplicationImpl1.doStart(ApplicationImpl1.zig:105)
at io.quarkus.runtime.Application.start(Application.java:93)
at io.quarkus.runtime.Application.run(Application.java:213)
at io.quarkus.runner.GeneratedMain.main(GeneratedMain.zig:34)

**Configuration**
```properties
 Configuration file
# key = value

quarkus.http.port=8080
quarkus.http.ssl-port=443
quarkus.http.ssl.certificate.key-store-file=keystore.jks
quarkus.http.ssl.certificate.key-store-password=mypasswd

quarkus.security.users.file.enabled=true

```

**Screenshots**
NA

**Environment (please complete the following information):**
 - Output of `uname -a` or `ver`: Linux raspberrypi 4.19.66-v7l+ #1253 SMP Thu Aug 15 12:02:08 BST 2019 armv7l GNU/Linux
 - Output of `java -version`: openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b01-1+rpi1-b01)
OpenJDK Client VM (build 25.212-b01, mixed mode)
 - GraalVM version (if different from Java): 
 - Quarkus version or git rev: 0.24.0

**Additional context**
Zulip description here : https://quarkusio.zulipchat.com/#narrow/stream/187030-users/topic/Option.20quarkus.2Esecurity.2Eusers.2Efile.2Eenabled


Changed files:
extensions/elytron-security-properties-file/runtime/src/main/java/io/quarkus/elytron/security/runtime/ElytronPropertiesFileRecorder.java

diff --git a/extensions/elytron-security-properties-file/runtime/src/main/java/io/quarkus/elytron/security/runtime/ElytronPropertiesFileRecorder.java b/extensions/elytron-security-properties-file/runtime/src/main/java/io/quarkus/elytron/security/runtime/ElytronPropertiesFileRecorder.java
index d39d15f683a..fff0e886ec5 100644
--- a/extensions/elytron-security-properties-file/runtime/src/main/java/io/quarkus/elytron/security/runtime/ElytronPropertiesFileRecorder.java
+++ b/extensions/elytron-security-properties-file/runtime/src/main/java/io/quarkus/elytron/security/runtime/ElytronPropertiesFileRecorder.java
@@ -3,6 +3,9 @@
 import java.io.IOException;
 import java.net.URL;
 import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.security.Provider;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -50,25 +53,37 @@ public Runnable loadRealm(RuntimeValue<SecurityRealm> realm, PropertiesRealmConf
         return new Runnable() {
             @Override
             public void run() {
-                log.debugf("loadRealm, config=%s", config);
-                SecurityRealm secRealm = realm.getValue();
-                if (!(secRealm instanceof LegacyPropertiesSecurityRealm)) {
-                    return;
-                }
-                log.debugf("Trying to loader users: /%s", config.users);
-                URL users = Thread.currentThread().getContextClassLoader().getResource(config.users);
-                log.debugf("users: %s", users);
-                log.debugf("Trying to loader roles: %s", config.roles);
-                URL roles = Thread.currentThread().getContextClassLoader().getResource(config.roles);
-                log.debugf("roles: %s", roles);
-                if (users == null && roles == null) {
-                    String msg = String.format(
-                            "No PropertiesRealmConfig users/roles settings found. Configure the quarkus.security.file.%s properties",
-                            config.help());
-                    throw new IllegalStateException(msg);
-                }
-                LegacyPropertiesSecurityRealm propsRealm = (LegacyPropertiesSecurityRealm) secRealm;
                 try {
+                    log.debugf("loadRealm, config=%s", config);
+                    SecurityRealm secRealm = realm.getValue();
+                    if (!(secRealm instanceof LegacyPropertiesSecurityRealm)) {
+                        return;
+                    }
+                    log.debugf("Trying to loader users: /%s", config.users);
+                    URL users;
+                    Path p = Paths.get(config.users);
+                    if (Files.exists(p)) {
+                        users = p.toUri().toURL();
+                    } else {
+                        users = Thread.currentThread().getContextClassLoader().getResource(config.users);
+                    }
+                    log.debugf("users: %s", users);
+                    log.debugf("Trying to loader roles: %s", config.roles);
+                    URL roles;
+                    p = Paths.get(config.roles);
+                    if (Files.exists(p)) {
+                        roles = p.toUri().toURL();
+                    } else {
+                        roles = Thread.currentThread().getContextClassLoader().getResource(config.roles);
+                    }
+                    log.debugf("roles: %s", roles);
+                    if (users == null && roles == null) {
+                        String msg = String.format(
+                                "No PropertiesRealmConfig users/roles settings found. Configure the quarkus.security.file.%s properties",
+                                config.help());
+                        throw new IllegalStateException(msg);
+                    }
+                    LegacyPropertiesSecurityRealm propsRealm = (LegacyPropertiesSecurityRealm) secRealm;
                     propsRealm.load(users.openStream(), roles.openStream());
                 } catch (IOException e) {
                     throw new RuntimeException(e);