<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-auth-htpasswd</artifactId>
<version>5.0.12</version>
</dependency>
认证与权限安全
你当前正在浏览历史版本 Vert.x 4.5.35 的文档。 访问本页面的 最新版本。
.htpasswd 身份认证提供者 (vertx-auth-htpasswd)
该组件提供了基于 Apache htpasswd 文件格式进行用户身份验证的 AuthenticationProvider 实现。
该提供者在启动加载文件后不会监听文件变更。若你的系统需要动态用户与凭据管理,建议使用基于数据库的动态提供者(例如 JDBC 或 MongoDB 认证模块)。
要在项目中使用该组件,请在构建描述文件中添加以下依赖:
-
Maven(在
pom.xml中):
-
Gradle(在
build.gradle文件中):
compile 'io.vertx:vertx-auth-htpasswd:5.0.12'
创建提供者前首先需要准备一个 htpasswd 文件,可以使用 Apache 官方自带的 htpasswd 命令行工具生成。
就绪后,按如下方式创建 HtpasswdAuth 实例:
HtpasswdAuth authProvider = HtpasswdAuth
.create(vertx, new HtpasswdAuthOptions());
获得实例后,即可像使用常规 AuthenticationProvider 一样进行身份验证。
开箱即用的默认配置会尝试从项目根目录加载名为 htpasswd 的文件。
提供者内部运行机制
提供者仅在启动初始化阶段加载指定的 htpasswd 文件内容,运行期间不会动态监控文件系统中的改动。若修改了文件内容,需要重启或重新创建提供者实例。
除内存中解析的 htpasswd 文件数据外,该实现不维护任何其它内部状态。
执行身份验证
使用该实现执行验证时,用户名与密码需封装为认证信息对象:
Credentials authInfo = new UsernamePasswordCredentials(
"someUser", "somePassword");
authProvider.authenticate(authInfo)
.onSuccess(user -> {
// 验证成功
})
.onFailure(err -> {
// 验证失败!
});
权限授权说明
Apache htpasswd 文件是纯粹的身份认证机制,不包含任何权限授权信息。
这意味着对该提供者返回的用户执行任何权限或角色检查时,结果将始终为 false。