<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-auth-abac</artifactId>
<version>5.0.1</version>
</dependency>
认证与授权
ABAC 认证提供者
我们提供了一个 AuthorizationProvider
的实现,该实现使用简单的基于属性的访问控制(Attribute Based Access Control)。此提供者由一个策略(Policy)对象支持,该对象包含属性与给定用户的匹配规则,匹配成功后,列出的授权将授予该用户。
一旦提供者返回了用户的授权,其验证机制与任何其他 AuthorizationProvider
相同。
要使用此项目,请将以下依赖项添加到您的构建描述符的依赖项部分
-
Maven(在您的
pom.xml
中)
-
Gradle(在您的
build.gradle
文件中)
compile 'io.vertx:vertx-auth-abac:5.0.1'
要创建实例,您首先需要一个策略对象。
例如
{
"name" : "Only MFA users have DELETE rights",
"attributes" : {
"/principal/amr": {
"eq": "mfa"
}
},
"authorizations" : [ {
"type" : "wildcard",
"permission" : "web:DELETE"
} ]
}
一旦您获得了其中之一,就可以按如下方式创建一个 PolicyBasedAuthorizationProvider
实例:
Policy policy = new Policy(
new JsonObject()
.put("name", "Only MFA users have DELETE rights")
.put("attributes", new JsonObject()
.put("/principal/amr", "mfa"))
.put("authorizations", new JsonArray()
.add(new JsonObject()
.put("type", "wildcard")
.put("permission", "web:DELETE"))));
PolicyBasedAuthorizationProvider.create()
.addPolicy(policy);
您可以从文件或通过代码加载单个策略,也可以向提供者加载多个策略。当加载多个策略时,所有策略都会与用户进行匹配,并返回所有授权。
策略使用属性。Vert.x 仅提供简单的属性实现,用于匹配相等性、否定或集合中的值。但这并非限制,因为您可以使用组合(composition)实现自己的属性,并将其注册到策略中。
Attribute.create(user -> {
// get the current origin
return "localhost".equals(user.get("origin"));
});