.htdigest 鉴权与授权的提供程序(.htdigest鉴授权提供者)
Vert.x提供了 AuthenticationProvider
的实现类,
它使用了 .digest
的文件格式以验证身份。提供程序加载该文件后,将不再监视文件的更新。
如果您需要动态的用户管理,使用动态提供程序(如jdbc或mongo提供程序)会更加的方便。
要使用该项目, 需在构建描述文件的 dependencies 部分添加以下依赖项:
-
Maven (在
pom.xml
文件中):
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-auth-htdigest</artifactId>
<version>4.4.0</version>
</dependency>
-
Gradle (在
build.gradle
文件中):
compile 'io.vertx:vertx-auth-htdigest:4.4.0'
要创建一个实例,您首先需要一份.htdigest文件。该文件可使用apache htdigest工具生成。
若您已拥有一个Vertx实例,那么您可按如下方式创建 HtdigestAuth
实例:
HtdigestAuth authProvider = HtdigestAuth.create(vertx, ".htdigest");
获得HtdigestAuth实例后, 您可以像使用任何的 AuthenticationProvider
实例一样,使用它进行身份验证。
缺省配置默认 .htdigest 文件存在于项目的根目录中。
鉴权/身份验证
使用此实现进行身份验证时,假定 digest 授权头是可解析的JSON对象, 从现在开始,我们将其称为身份验证信息:
JsonObject authInfo = new JsonObject()
.put("username", "Mufasa")
.put("realm", "testrealm@host.com")
.put("nonce", "dcd98b7102dd2f0e8b11d0f600bfb0c093")
.put("method", "GET")
.put("uri", "/dir/index.html")
.put("response", "6629fae49393a05397450978507c4ef1");
authProvider.authenticate(authInfo)
.onSuccess(user -> System.out.println("User: " + user.principal()))
.onFailure(err -> {
// Failed!
});