认证与权限安全
你当前正在浏览历史版本 Vert.x 4.1.8 的文档。 访问本页面的 最新版本。

.htpasswd 身份认证提供者 (vertx-auth-htpasswd)

该组件提供了基于 Apache htpasswd 文件格式进行用户身份验证的 AuthenticationProvider 实现。 该提供者在启动加载文件后不会监听文件变更。若你的系统需要动态用户与凭据管理,建议使用基于数据库的动态提供者(例如 JDBC 或 MongoDB 认证模块)。

要在项目中使用该组件,请在构建描述文件中添加以下依赖:

  • Maven(在 pom.xml 中):

<dependency>
  <groupId>io.vertx</groupId>
  <artifactId>vertx-auth-htpasswd</artifactId>
  <version>5.0.12</version>
</dependency>
  • 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。