The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.

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:

pom.xml
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-elytron-security-properties-file</artifactId>
</dependency>
build.gradle
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

Configuration property

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: QUARKUS_SECURITY_USERS_EMBEDDED_PLAIN_TEXT

boolean

false

Determine which algorithm to use. This property is ignored if plainText is true.

Environment variable: QUARKUS_SECURITY_USERS_EMBEDDED_ALGORITHM

digest-md5, digest-sha, digest-sha-256, digest-sha-384, digest-sha-512, digest-sha-512-256

digest-md5

The realm users user1=password\nuser2=password2…​ mapping. See Embedded Users.

Environment variable: QUARKUS_SECURITY_USERS_EMBEDDED_USERS

Map<String,String>

none

The realm roles user1=role1,role2,…​\nuser2=role1,role2,…​ mapping See Embedded Roles.

Environment variable: QUARKUS_SECURITY_USERS_EMBEDDED_ROLES

Map<String,String>

none

Property Files Realm Configuration

Type

Default

The realm name. This is used when generating a hashed password

Environment variable: QUARKUS_SECURITY_USERS_FILE_REALM_NAME

string

Quarkus

Determine whether security via the file realm is enabled.

Environment variable: QUARKUS_SECURITY_USERS_FILE_ENABLED

boolean

false

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: QUARKUS_SECURITY_USERS_FILE_PLAIN_TEXT

boolean

false

Classpath resource name of properties file containing user to password mappings. See Users.properties.

Environment variable: QUARKUS_SECURITY_USERS_FILE_USERS

string

users.properties

Classpath resource name of properties file containing user to role mappings. See Roles.properties.

Environment variable: QUARKUS_SECURITY_USERS_FILE_ROLES

string

roles.properties

Embedded Realm Configuration

Type

Default

The realm name. This is used when generating a hashed password

Environment variable: QUARKUS_SECURITY_USERS_EMBEDDED_REALM_NAME

string

Quarkus

Determine whether security via the embedded realm is enabled.

Environment variable: QUARKUS_SECURITY_USERS_EMBEDDED_ENABLED

boolean

false

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.

ejemplo de la sección del archivo application.properties para los archivos de propiedades realm
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:

ejemplo de archivo test-users.properties
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

ejemplo de archivo test-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:

ejemplo de sección del archivo application.properties para el á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:

Ejemplos de contraseñas
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:

Ejemplo de funciones
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