Utilizando la seguridad con el archivo .properties
Quarkus proporciona soporte para la autenticación basada en archivos de propiedades que está pensada para propósitos de desarrollo y prueba. No se recomienda su uso en producción, ya que en la actualidad sólo se utilizan contraseñas en texto plano y con hash MD5, y los archivos de propiedades suelen ser demasiado limitados para su uso en producción.
Añade lo siguiente a tu archivo de construcción:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-elytron-security-properties-file</artifactId>
</dependency>
implementation("io.quarkus:quarkus-elytron-security-properties-file")
Configuración
La extensión elytron-security-properties-file admite actualmente dos ámbitos diferentes para el almacenamiento de información de autenticación y autorización. Ambos soportan el almacenamiento de esta información en archivos de propiedades. Las siguientes secciones detallan las propiedades de configuración específicas.
Configuration property fixed at build time - All other configuration properties are overridable at runtime
Type |
Default |
|
---|---|---|
If the properties are stored in plain text. If this is false (the default) then it is expected that the passwords are of the form HEX( MD5( username ":" realm ":" password ) ) Environment variable: |
boolean |
|
Determine which algorithm to use.
This property is ignored if Environment variable: |
|
|
The realm users user1=password\nuser2=password2… mapping. See Embedded Users. Environment variable: |
|
|
The realm roles user1=role1,role2,…\nuser2=role1,role2,… mapping See Embedded Roles. Environment variable: |
|
|
Type |
Default |
|
The realm name. This is used when generating a hashed password Environment variable: |
string |
|
Determine whether security via the file realm is enabled. Environment variable: |
boolean |
|
If the properties are stored in plain text. If this is false (the default) then it is expected that the passwords are of the form HEX( MD5( username ":" realm ":" password ) ) Environment variable: |
boolean |
|
Classpath resource name of properties file containing user to password mappings. See Users.properties. Environment variable: |
string |
|
Classpath resource name of properties file containing user to role mappings. See Roles.properties. Environment variable: |
string |
|
Type |
Default |
|
The realm name. This is used when generating a hashed password Environment variable: |
string |
|
Determine whether security via the embedded realm is enabled. Environment variable: |
boolean |
|
Archivos de propiedades Configuración del dominio
El ámbito de los archivos de propiedades admite la asignación de usuarios a contraseñas y de usuarios a roles con una combinación de archivos de propiedades. Se configuran con propiedades que comienzan con quarkus.security.users.file
.
quarkus.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=true
Usuarios.propiedades
La propiedad de configuración quarkus.security.users.file.users
especifica un recurso classpath que es un archivo de propiedades con un mapeo de usuario a contraseña, uno por línea. El siguiente ejemplo de archivo test-users.properties ilustra el formato:
scott=jb0ss (1)
jdoe=p4ssw0rd (2)
stuart=test
noadmin=n0Adm1n
1 | El usuario scott tiene una contraseña definida como jb0ss |
2 | El usuario jdoe tiene una contraseña definida como p4ssw0rd |
Este archivo tiene los nombres de usuario y las contraseñas almacenados en texto plano, lo cual no es recomendable. Si el texto plano se establece como falso (u omitido) en la configuración, entonces las contraseñas deben ser almacenadas en la forma MD5 ( username : realm : password )
. Esto se puede generar para el primer ejemplo anterior ejecutando el comando echo -n scott:MyRealm:jb0ss | md5
desde la línea de comandos.
Roles.properties
scott=Admin,admin,Tester,user (1)
jdoe=NoRolesUser (2)
stuart=admin,user (3)
noadmin=user
1 | El usuario scott tiene asignados los roles Admin , admin , Tester y user |
2 | Al usuario jdoe se le ha asignado el rol NoRolesUser |
3 | El usuario stuart tiene asignados los roles admin y user . |
Configuración del reino integrado
El ámbito integrado también admite la asignación de usuarios a contraseñas y de usuarios a roles. Utiliza el archivo de configuración principal de application.properties
Quarkus para incrustar esta información. Se configuran con propiedades que comienzan con quarkus.security.users.embedded
.
A continuación se muestra una sección del archivo application.properties de ejemplo que ilustra la configuración del ámbito integrado:
quarkus.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=user
Al igual que en el primer ejemplo, este archivo tiene los nombres de usuario y las contraseñas almacenados en texto plano, lo que no es recomendable. Si el texto plano se establece como falso (u omitido) en la configuración, entonces las contraseñas deben ser almacenadas en la forma MD5 ( username : realm : password )
. Esto se puede generar para el primer ejemplo anterior ejecutando el comando echo -n scott:MyRealm:jb0ss | md5
desde la línea de comandos.
Usuarios integrados
Las asignaciones de usuario a contraseña se especifican en el archivo application.properties
mediante claves de propiedades de la forma quarkus.security.users.embedded.users.<user>=<password>
. El siguiente Ejemplos de contraseñas ilustra la sintaxis con 4 asignaciones de usuario a contraseña:
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
1 | El usuario scott tiene contraseña jb0ss |
2 | El usuario stuart tiene contraseña test |
Funciones integradas
Las asignaciones de usuario a rol se especifican en el archivo application.properties
mediante claves de propiedades de la forma quarkus.security.users.embedded.roles.<user>=role1[,role2[,role3[,…]]]
. El siguiente Ejemplo de funciones ilustra la sintaxis con 4 asignaciones de usuario a rol:
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
1 | El usuario scott tiene los roles Admin , admin , Tester , y user |
2 | El usuario stuart tiene los roles admin y user |