Using Security with .properties File

Quarkus 提供对基于属性文件进行身份验证的支持,该身份验证适用于开发和测试目的。不建议在生产环境中使用此身份验证,因为目前仅使用纯文本和 MD5 哈希密码,并且属性文件通常过于有限。 将以下内容添加到您的构建文件中:

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")

Configuration

elytron-security-properties-file 扩展目前支持两个用于存储身份验证和授权信息的不同领域。这两者都支持在属性文件中存储此信息。

以下部分详细介绍特定配置属性。

Unresolved include directive in modules/ROOT/pages/security-properties.adoc - include::../../../target/quarkus-generated-doc/config/quarkus-elytron-security-properties-file.adoc[]

Properties Files Realm Configuration

属性文件领域支持使用一些属性文件将用户映射到密码,将用户映射到角色。从`quarkus.security.users.file`开头的属性中设置。

Example of the application.properties file section for property files 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

Users.properties

`quarkus.security.users.file.users`配置属性指定了一个类路径资源,它是一个属性文件,文件中包含用户到密码的映射,每行一个。

以下[test-users-example]说明了格式:

Example of test-users.properties
scott=jb0ss 1
jdoe=p4ssw0rd 2
stuart=test
noadmin=n0Adm1n
1 用户 scott`的密码定义为 `jb0ss
2 用户 jdoe`的密码定义为 `p4ssw0rd

此文件中以纯文本形式存储了用户名和密码,不建议这样做。如果在配置中将纯文本设置为 false(或忽略),则必须以 `MD5 ( username : realm : password )`的形式存储密码。通过从命令行运行命令 `echo -n scott:MyRealm:jb0ss | md5`可以为以上的第一个示例生成密码。

Roles.properties

Example of test-roles.properties
scott=Admin,admin,Tester,user 1
jdoe=NoRolesUser 2
stuart=admin,user 3
noadmin=user
1 用户 scott`已分配了角色 `Admin, admin, Tester`和 `user
2 用户 jdoe`已分配了角色 `NoRolesUser
3 用户 stuart`已分配了角色 `admin`和 `user.

Embedded Realm Configuration

嵌入式领域还支持将用户映射到密码,将用户映射到角色。它使用主 `application.properties`Quarkus 配置文件嵌入此信息。从`quarkus.security.users.embedded`开头的属性中设置。

以下是一个示例 application.properties 文件,来说明嵌入式领域配置:

Example of the application.properties file section for embedded realm
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

与此第一个示例类似,此文件中以纯文本形式存储了用户名和密码,不建议这样做。如果在配置中将纯文本设置为 false(或忽略),则必须以 `MD5 ( username : realm : password )`的形式存储密码。通过从命令行运行命令 `echo -n scott:MyRealm:jb0ss | md5`可以为以上的第一个示例生成密码。

Embedded Users

用户到密码映射是通过以下形式的属性键在 application.properties`文件中指定的: `quarkus.security.users.embedded.users.<user>=<password>. 以下 [password-example]以四种用户到密码映射来说明语法:

Example of passwords
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 用户 scott`的密码是 `jb0ss
2 用户 stuart`的密码是 `test

Embedded Roles

用户到角色映射是通过以下形式的属性键在 application.properties`文件中指定的: `quarkus.security.users.embedded.roles.<user>=role1[,role2[,role3[,…​]]]. 以下 [roles-example]以四种用户到角色映射來說明语法:

Example of roles
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 用户 scott`的角色是 `Admin, admin, Tester, 和 user
2 用户 stuart`的角色是 `admin`和 `user