使用 Security 与 .properties 文件
Quarkus 提供基于 properties 文件的身份验证支持,旨在用于开发和测试目的。不建议在生产环境中使用此身份验证,因为目前仅使用明文和 MD5 哈希密码,并且 properties 文件通常功能过于有限。
将以下内容添加到您的构建文件中
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-elytron-security-properties-file</artifactId>
</dependency>
implementation("io.quarkus:quarkus-elytron-security-properties-file")
配置
elytron-security-properties-file 扩展目前支持两个不同的领域来存储身份验证和授权信息。两者都支持将此信息存储在 properties 文件中。
以下各节详细介绍了特定的配置属性。
如果使用多个身份验证机制,必须使用 |
构建时固定的配置属性 - 所有其他配置属性都可以在运行时覆盖
配置属性 |
类型 |
默认 |
---|---|---|
如果属性以明文形式存储。如果此设置为 false(默认值),则预计密码的格式为 HEX( MD5( username ":" realm ":" password ) ) 环境变量: 显示更多 |
布尔值 |
|
确定要使用的算法。 如果 环境变量: 显示更多 |
|
|
领域用户 user1=password\nuser2=password2… 映射。请参阅 嵌入式用户。 环境变量: 显示更多 |
Map<String,String> |
|
领域角色 user1=role1,role2,…\nuser2=role1,role2,… 映射。请参阅 嵌入式角色。 环境变量: 显示更多 |
Map<String,String> |
|
类型 |
默认 |
|
领域名称。在生成哈希密码时使用。 环境变量: 显示更多 |
字符串 |
|
布尔值 |
|
|
如果属性以明文形式存储。如果此设置为 false(默认值),则预计密码的格式为 HEX( MD5( username ":" realm ":" password ) ) 环境变量: 显示更多 |
布尔值 |
|
包含用户到密码映射的 properties 文件的类路径资源名称。请参阅 Users.properties。 环境变量: 显示更多 |
字符串 |
|
包含用户到角色映射的 properties 文件的类路径资源名称。请参阅 Roles.properties。 环境变量: 显示更多 |
字符串 |
|
类型 |
默认 |
|
领域名称。在生成哈希密码时使用。 环境变量: 显示更多 |
字符串 |
|
确定是否通过嵌入式领域启用安全。 环境变量: 显示更多 |
布尔值 |
|
Properties 文件领域配置
properties 文件领域支持通过 properties 文件的组合来映射用户与密码以及用户与角色。它们使用以 quarkus.security.users.file
开头的属性进行配置。
application.properties
文件部分的示例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
配置属性指定一个类路径资源,该资源是一个 properties 文件,其中包含用户到密码的映射,每行一个。
以下 test-users.properties
示例 说明了格式。
test-users.properties
示例scott=jb0ss (1)
jdoe=p4ssw0rd (2)
stuart=test
noadmin=n0Adm1n
1 | 用户 scott 的密码定义为 jb0ss 。 |
2 | 用户 jdoe 的密码定义为 p4ssw0rd 。 |
此文件以明文形式存储用户名和密码,不推荐这样做。如果在配置中将 plain text 设置为 false(或省略),则密码必须以 MD5 ( username : realm : password )
格式存储。可以通过从命令行运行 echo -n scott:MyRealm:jb0ss | md5
命令来生成上述第一个示例的哈希。
嵌入式领域配置
嵌入式领域也支持用户与密码以及用户与角色的映射。它使用主要的 application.properties
Quarkus 配置文件来嵌入此信息。它们使用以 quarkus.security.users.embedded
开头的属性进行配置。
以下是说明嵌入式领域配置的 application.properties
文件部分的示例。
application.properties
文件部分的示例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
与第一个示例一样,此文件以明文形式存储用户名和密码,不推荐这样做。如果在配置中将 plain text 设置为 false(或省略),则密码必须以 MD5 ( username : realm : password )
格式存储。可以通过从命令行运行 echo -n scott:MyRealm:jb0ss | md5
命令来生成上述第一个示例的哈希。
嵌入式用户
用户到密码的映射在 application.properties
文件中通过形式为 quarkus.security.users.embedded.users.<user>=<password>
的属性键指定。以下 密码示例 说明了带有 4 个用户到密码映射的语法。
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 。 |
嵌入式角色
用户到角色的映射在 application.properties
文件中通过形式为 quarkus.security.users.embedded.roles.<user>=role1[,role2[,role3[,…]]]
的属性键指定。以下 角色示例 说明了带有 4 个用户到角色映射的语法。
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 角色。 |