如何为Vert.x编写自定义授权实现?

时间:2018-05-10 13:38:24

标签: java authorization vert.x

我在这里写了一个名为jCasbin的Java授权库:Merge。我想为Vert.x编写一个自定义授权插件,以使用jCasbin作为授权后端(确定是否允许基于策略规则的请求)。但我不知道该怎么做。

我看到Vert.x的文档有这样一个页面:https://github.com/casbin/jcasbin。但是那里提供的所有实现(如MongoDB auth,Shiro auth)都包含身份验证和授权。我只想提供授权。有办法吗?什么是最好的步骤?

1 个答案:

答案 0 :(得分:0)

要实施仅AuthZ提供商,您应该查看JWT提供商:https://github.com/vert-x3/vertx-auth/tree/master/vertx-auth-jwt

请记住,您应该忽略方法generateToken,因为这些方法是帮助AuthN

所以基本上你需要实现以下方法:

@Override
public void authenticate(JsonObject authInfo,
                         Handler<AsyncResult<User>> resultHandler) {
  ...
}

authInfo对象应包含您需要的令牌或任何有效负载,然后您将执行断言,如果它们是好的,则返回User个对象。

User对象将用于执行AuthZ。您的对象应该实现:

@Override
public void doIsPermitted(String permission,
                          Handler<AsyncResult<Boolean>> handler) {
  ...
}

例如,请参阅:https://github.com/vert-x3/vertx-auth/blob/master/vertx-auth-jwt/src/main/java/io/vertx/ext/auth/jwt/impl/JWTUser.java