Usando a segurança com o arquivo .properties
O Quarkus oferece suporte para autenticação baseada em arquivos de propriedades, destinada a fins de desenvolvimento e teste. Não é recomendado usar essa autenticação em produção, pois, atualmente, são utilizados apenas senhas em texto simples e senhas com hash MD5, e os arquivos de propriedades geralmente são muito limitados.
Adicione o seguinte ao seu arquivo de compilação:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-elytron-security-properties-file</artifactId>
</dependency>
implementation("io.quarkus:quarkus-elytron-security-properties-file")
Configuração
A extensão elytron-security-properties-file atualmente suporta dois diferentes realms para armazenar informações de autenticação e autorização. Ambos suportam o armazenamento dessas informações em arquivos de propriedades.
As seções a seguir detalham as propriedades específicas de configuração.
Basic authentication must be explicitly enabled with |
Propriedade de Configuração Fixa no Momento da Compilação - Todas as outras propriedades de configuração podem ser sobrepostas em tempo de execução.
Configuration property |
Tipo |
Padrão |
---|---|---|
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: Show more |
boolean |
|
Determine which algorithm to use. This property is ignored if Environment variable: Show more |
|
|
The realm users user1=password\nuser2=password2… mapping. See Embedded Users. Environment variable: Show more |
Map<String,String> |
|
The realm roles user1=role1,role2,…\nuser2=role1,role2,… mapping See Embedded Roles. Environment variable: Show more |
Map<String,String> |
|
Tipo |
Padrão |
|
The realm name. This is used when generating a hashed password Environment variable: Show more |
string |
|
Determine whether security via the file realm is enabled. Environment variable: Show more |
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: Show more |
boolean |
|
Classpath resource name of properties file containing user to password mappings. See Users.properties. Environment variable: Show more |
string |
|
Classpath resource name of properties file containing user to role mappings. See Roles.properties. Environment variable: Show more |
string |
|
Tipo |
Padrão |
|
The realm name. This is used when generating a hashed password Environment variable: Show more |
string |
|
Determine whether security via the embedded realm is enabled. Environment variable: Show more |
boolean |
|
Arquivos de propriedades Realm Configuration
Os arquivos de propriedades realm suporta o mapeamento de usuários para senhas e de usuários para funções com uma combinação de arquivos de propriedades. Eles são configurados com propriedades que começam com quarkus.security.users.file
.
application.properties
para arquivos de propriedade 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=true
Usuários.propriedades
A propriedade de configuração quarkus.security.users.file.users
especifica um recurso classpath que é uma propriedade de arquivos com um mapeamento de usuário para senha, um por linha.
O exemplo a seguir Exemplo de test-users.properties
ilustra o formato:
test-users.properties
scott=jb0ss (1)
jdoe=p4ssw0rd (2)
stuart=test
noadmin=n0Adm1n
1 | O usuário scott tem uma senha definida como jb0ss |
2 | O usuário jdoe tem uma senha definida como p4ssw0rd |
Este arquivo contém nomes de usuário e senhas armazenados em texto simples, o que não é recomendado. Se o texto simples for definido como falso (ou omitido) na configuração, as senhas deverão ser armazenadas no formato MD5 ( username : realm : password )
. Isso pode ser gerado para o primeiro exemplo acima executando o comando echo -n scott:MyRealm:jb0ss | md5
na linha de comando.
Roles.properties
test-roles.properties
scott=Admin,admin,Tester,user (1)
jdoe=NoRolesUser (2)
stuart=admin,user (3)
noadmin=user
1 | O usuário scott recebeu as funções Admin , admin , Tester e user |
2 | O usuário jdoe recebeu a atribuição da função NoRolesUser |
3 | O usuário stuart recebeu as funções admin e user . |
Configuração do Embedded Realm
O realm incorporado também oferece suporte ao mapeamento de usuários para senhas e de usuários para funções. Ele usa o arquivo de configuração principal application.properties do Quarkus para incorporar essas informações. Eles são configurados com propriedades que começam com quarkus.security.users.embedded
.
A seguir, um exemplo de seção do arquivo application.properties que ilustra a configuração do realm incorporado:
application.properties
para realm incorporadoquarkus.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
Assim como no primeiro exemplo, esse arquivo tem nomes de usuário e senhas armazenados em texto simples, o que não é recomendado. Se o texto simples for definido como falso (ou omitido) na configuração, as senhas deverão ser armazenadas no formato MD5 ( username : realm : password )
. Isso pode ser gerado para o primeiro exemplo acima executando o comando echo -n scott:MyRealm:jb0ss | md5
na linha de comando.
Usuários incorporados
Os mapeamentos de usuário para senha são especificados no arquivo application.properties
por chaves de propriedades do formulário quarkus.security.users.embedded.users.<user>=<password>
. O exemplo a seguir Exemplo de senhas ilustra a sintaxe com 4 mapeamentos de usuário para senha:
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 | O usuário scott tem senha jb0ss |
2 | O usuário stuart tem senha test |
Funções incorporadas
Os mapeamentos de usuário para função são especificados no arquivo application.properties
por chaves de propriedades do formulário quarkus.security.users.embedded.roles.<user>=role1[,role2[,role3[,…]]]
. O exemplo a seguir Exemplo de funções ilustra a sintaxe com 4 mapeamentos de usuário para função:
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 | O usuário scott tem funções Admin , admin , Tester , e user |
2 | O usuário stuart tem funções admin e user |