_attributes.adoc :categories: security :summary: This guide demonstrates how your Quarkus application can use a .properties file to store your user identities. :topics: security,identity-providers :extensions: io.quarkus:quarkus-elytron-security-properties-file
Quarkus provides support for properties file-based authentication intended for development and testing purposes. It is not recommended to use this authentication in production as, at present, only plain-text and MD5 hashed passwords are used, and properties files are generally too limited.
Add the following to your build file:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-elytron-security-properties-file</artifactId>
</dependency>implementation("io.quarkus:quarkus-elytron-security-properties-file")The elytron-security-properties-file extension currently supports two different realms for storing authentication and authorization information. Both support storage of this information in properties files.
The following sections detail the specific configuration properties.
|
Note
|
Basic authentication must be explicitly enabled with |
The properties files realm supports the mapping of users to passwords and users to roles with a combination of properties files.
They are configured with properties starting with
quarkus.security.users.file.
application.properties file section for property files realmquarkus.security.users.file.enabled=true
quarkus.security.users.file.users=test-users.properties
quarkus.security.users.file.roles=test-roles.properties
quarkus.security.users.file.realm-name=MyRealm
quarkus.security.users.file.plain-text=trueThe quarkus.security.users.file.users configuration property specifies a classpath resource which is a properties file with a user-to-password mapping, one per line.
The following Example of test-users.properties illustrates the format:
test-users.propertiesscott=jb0ss (1)
jdoe=p4ssw0rd (2)
stuart=test
noadmin=n0Adm1n-
User
scotthas password defined asjb0ss -
User
jdoehas password defined asp4ssw0rd
This file has usernames and passwords stored in plain text, which is not recommended.
If plain text is set to false (or omitted) in the config, then passwords must be stored in the form MD5 ( username : realm : password ).
This can be generated for the first example above by running the command echo -n scott:MyRealm:jb0ss | md5 from the command line.
test-roles.propertiesscott=Admin,admin,Tester,user (1)
jdoe=NoRolesUser (2)
stuart=admin,user (3)
noadmin=user-
User
scotthas been assigned the rolesAdmin,admin,Testeranduser -
User
jdoehas been assigned the roleNoRolesUser -
User
stuarthas been assigned the rolesadminanduser.
The embedded realm also supports the mapping of users to passwords and users to roles.
It uses the main application.properties Quarkus configuration file to embed this information.
They are configured with properties starting with quarkus.security.users.embedded.
The following is an example application.properties file section illustrating the embedded realm configuration:
application.properties file section for embedded realmquarkus.security.users.embedded.enabled=true
quarkus.security.users.embedded.plain-text=true
quarkus.security.users.embedded.users.scott=jb0ss
quarkus.security.users.embedded.users.stuart=test
quarkus.security.users.embedded.users.jdoe=p4ssw0rd
quarkus.security.users.embedded.users.noadmin=n0Adm1n
quarkus.security.users.embedded.roles.scott=Admin,admin,Tester,user
quarkus.security.users.embedded.roles.stuart=admin,user
quarkus.security.users.embedded.roles.jdoe=NoRolesUser
quarkus.security.users.embedded.roles.noadmin=userAs with the first example, this file has usernames and passwords stored in plain text, which is not recommended.
If plain text is set to false (or omitted) in the config, then passwords must be stored in the form MD5 ( username : realm : password ).
This can be generated for the first example above by running the command echo -n scott:MyRealm:jb0ss | md5 from the command line.
The user to password mappings are specified in the application.properties file by properties keys of the form quarkus.security.users.embedded.users.<user>=<password>.
The following Example of passwords illustrates the syntax with 4 user-to-password mappings:
quarkus.security.users.embedded.users.scott=jb0ss # (1)
quarkus.security.users.embedded.users.stuart=test # (2)
quarkus.security.users.embedded.users.jdoe=p4ssw0rd
quarkus.security.users.embedded.users.noadmin=n0Adm1n-
User
scotthas passwordjb0ss -
User
stuarthas passwordtest
The user to role mappings are specified in the application.properties file by properties keys of the form quarkus.security.users.embedded.roles.<user>=role1[,role2[,role3[,…]]].
The following Example of roles illustrates the syntax with 4 user-to-role mappings:
quarkus.security.users.embedded.roles.scott=Admin,admin,Tester,user # (1)
quarkus.security.users.embedded.roles.stuart=admin,user # (2)
quarkus.security.users.embedded.roles.jdoe=NoRolesUser
quarkus.security.users.embedded.roles.noadmin=user-
User
scotthas rolesAdmin,admin,Tester, anduser -
User
stuarthas rolesadminanduser