认证与授权

.htpasswd 认证提供者

我们提供了一个 AuthenticationProvider 的实现,它使用 Apache htpasswd 文件格式进行认证。提供者在加载文件后不会监视文件的更新。如果您需要动态用户管理,使用动态提供者(例如 jdbc 或 mongo 提供者)会更方便。

要使用此项目,请将以下依赖项添加到您的构建描述符的依赖项部分

  • Maven(在您的 pom.xml 中)

<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-auth-htpasswd</artifactId>
<version>5.0.1</version>
</dependency>
  • Gradle(在您的 build.gradle 文件中)

compile 'io.vertx:vertx-auth-htpasswd:5.0.1'

要创建一个实例,您首先需要一个 htpasswd 文件。此文件是使用 apache htpasswd 工具创建的。

一旦您有了其中一个文件,您就可以按如下方式创建一个 HtpasswdAuth 实例

HtpasswdAuth authProvider = HtpasswdAuth
  .create(vertx, new HtpasswdAuthOptions());

一旦您有了您的实例,您就可以像使用任何 AuthenticationProvider 一样进行认证。

开箱即用的配置假定项目根目录下使用 htpasswd 文件。

提供者的内部行为

提供者将在启动时加载指定的 htpasswd 文件,并且不会监视修改。如果您需要动态重新加载,则需要重新启动提供者。

除了 htpasswd 文件本身,此实现不具有任何其他状态。

认证

当使用此实现进行认证时,它假定用户名和密码被解析为一个 JSON 对象,我们从现在起将其称为认证信息。

Credentials authInfo = new UsernamePasswordCredentials(
  "someUser", "somePassword");

authProvider.authenticate(authInfo)
  .onSuccess(user -> {
    // OK
  })
  .onFailure(err -> {
    // Failed!
  });

授权

Apache htpasswd 文件是一种纯粹的认证机制,而非授权。这意味着权限检查将始终为 false