编辑此页面

使用 Security 与 .properties 文件

Quarkus 提供基于 properties 文件的身份验证支持,旨在用于开发和测试目的。不建议在生产环境中使用此身份验证,因为目前仅使用明文和 MD5 哈希密码,并且 properties 文件通常功能过于有限。

将以下内容添加到您的构建文件中

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

配置

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

以下各节详细介绍了特定的配置属性。

如果使用多个身份验证机制,必须使用 quarkus.http.auth.basic=true 显式启用基本身份验证。

构建时固定的配置属性 - 所有其他配置属性都可以在运行时覆盖

配置属性

类型

默认

如果属性以明文形式存储。如果此设置为 false(默认值),则预计密码的格式为 HEX( MD5( username ":" realm ":" password ) )

环境变量: QUARKUS_SECURITY_USERS_EMBEDDED_PLAIN_TEXT

显示更多

布尔值

false

确定要使用的算法。

如果 plainText 为 true,则将忽略此属性。

环境变量: QUARKUS_SECURITY_USERS_EMBEDDED_ALGORITHM

显示更多

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

digest-md5

领域用户 user1=password\nuser2=password2…​ 映射。请参阅 嵌入式用户

环境变量: QUARKUS_SECURITY_USERS_EMBEDDED_USERS__USERS_

显示更多

Map<String,String>

none

领域角色 user1=role1,role2,…​\nuser2=role1,role2,…​ 映射。请参阅 嵌入式角色

环境变量: QUARKUS_SECURITY_USERS_EMBEDDED_ROLES__ROLES_

显示更多

Map<String,String>

none

Properties 文件领域配置

类型

默认

领域名称。在生成哈希密码时使用。

环境变量: QUARKUS_SECURITY_USERS_FILE_REALM_NAME

显示更多

字符串

Quarkus

确定是否通过文件领域启用安全。

环境变量: QUARKUS_SECURITY_USERS_FILE_ENABLED

显示更多

布尔值

false

如果属性以明文形式存储。如果此设置为 false(默认值),则预计密码的格式为 HEX( MD5( username ":" realm ":" password ) )

环境变量: QUARKUS_SECURITY_USERS_FILE_PLAIN_TEXT

显示更多

布尔值

false

包含用户到密码映射的 properties 文件的类路径资源名称。请参阅 Users.properties

环境变量: QUARKUS_SECURITY_USERS_FILE_USERS

显示更多

字符串

users.properties

包含用户到角色映射的 properties 文件的类路径资源名称。请参阅 Roles.properties

环境变量: QUARKUS_SECURITY_USERS_FILE_ROLES

显示更多

字符串

roles.properties

嵌入式领域配置

类型

默认

领域名称。在生成哈希密码时使用。

环境变量: QUARKUS_SECURITY_USERS_EMBEDDED_REALM_NAME

显示更多

字符串

Quarkus

确定是否通过嵌入式领域启用安全。

环境变量: QUARKUS_SECURITY_USERS_EMBEDDED_ENABLED

显示更多

布尔值

false

Properties 文件领域配置

properties 文件领域支持通过 properties 文件的组合来映射用户与密码以及用户与角色。它们使用以 quarkus.security.users.file 开头的属性进行配置。

properties 文件领域 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 命令来生成上述第一个示例的哈希。

Roles.properties

test-roles.properties 示例
scott=Admin,admin,Tester,user (1)
jdoe=NoRolesUser (2)
stuart=admin,user (3)
noadmin=user
1 用户 scott 已被分配了 AdminadminTesteruser 角色。
2 用户 jdoe 已被分配了 NoRolesUser 角色。
3 用户 stuart 已被分配了 adminuser 角色。

嵌入式领域配置

嵌入式领域也支持用户与密码以及用户与角色的映射。它使用主要的 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 具有 AdminadminTesteruser 角色。
2 用户 stuart 具有 adminuser 角色。