<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-auth-htdigest</artifactId>
<version>5.0.1</version>
</dependency>
认证与授权
.htdigest 认证提供程序
我们提供一个 AuthenticationProvider
的实现,它使用 .digest
文件格式来执行身份验证。该提供程序在加载后不会监视文件的更新。如果您需要动态用户管理,使用动态提供程序(例如 JDBC 或 Mongo 提供程序)会更方便。
要使用此项目,请将以下依赖项添加到您的构建描述符的依赖项部分
-
Maven(在您的
pom.xml
中)
-
Gradle(在您的
build.gradle
文件中)
compile 'io.vertx:vertx-auth-htdigest:5.0.1'
要创建一个实例,您首先需要一个 .htdigest 文件。此文件是使用 Apache htdigest 工具创建的。
一旦您拥有其中一个,就可以按如下方式创建一个 HtdigestAuth
实例
HtdigestAuth authProvider = HtdigestAuth.create(vertx, ".htdigest");
一旦您获得实例,就可以像任何 AuthenticationProvider
一样使用它进行身份验证。
默认配置假定在项目根目录中使用 .htdigest 文件。
认证
当使用此实现进行身份验证时,它假定摘要认证头被解析为一个 JSON 对象,我们从现在起将其称为身份验证信息
Credentials authInfo = new HtdigestCredentials()
.setUsername("Mufasa")
.setRealm("[email protected]")
.setNonce("dcd98b7102dd2f0e8b11d0f600bfb0c093")
.setMethod("GET")
.setUri("/dir/index.html")
.setResponse("6629fae49393a05397450978507c4ef1");
authProvider.authenticate(authInfo)
.onSuccess(user -> System.out.println("User: " + user.principal()))
.onFailure(err -> {
// Failed!
});
提供程序内部行为
该提供程序将在启动时加载指定的 .htdigest 文件,并且不会监视修改。如果您需要动态重新加载,您将需要重新启动该提供程序。
该实现除了摘要文件本身之外不包含任何其他状态,这意味着 nonce
字符串和计数器的验证和生成必须在此提供程序之外处理。
最后,不支持 auth-int
qop
,以避免为了验证完整请求的哈希值而不得不消耗潜在的大量数据块。现代网络浏览器通常也不支持此功能。
在验证用户特定权限时,它将始终返回 false,因为 htdigest 文件是纯粹的身份验证机制,而非授权。