Search code examples
thorntail

What is the simplest way to add application users in a Thorntail WildFly server?


As said in the title, is there a way to add application users in Thorntail WilFly server, much like you would do with "add-user.sh -a" script in the full server distribution?
I understand you can provide an external configuration file to Thorntail but that seems a bit of overhead just for specifying where users are located. Thanks


Solution

  • The answer by Thomas Herzog is very good from a conceptual point of view -- I'd especially agree with securing the application using an external Keycloak, potentially with the help of MicroProfile JWT. I'm just gonna provide a few points in case you decide not to.

    You can define users directly in project-defaults.yml, like this:

    thorntail:
      management:
        security-realms:
          ApplicationRealm:
            in-memory-authentication:
              users:
                bob:
                  password: tacos!
            in-memory-authorization:
              users:
                bob:
                  roles:
                  - admin
    

    The project-defaults.yml file doesn't have to be external to the app, you can build it directly into it. Typically, in your source code, the file will be located in src/main/resources, and after building, it will be embedded inside the -thorntail.jar. It can be external, of course, and if this is something else than a throwaway prototype or test, sensitive data like this should be external.

    You can also use the .properties files from WildFly:

    thorntail:
      management:
        security-realms:
          ApplicationRealm:
            properties-authentication:
              path: .../path/to/application-users.properties
            properties-authorization:
              path: .../path/to/application-roles.properties