Как написать собственную реализацию авторизации для Vert.x? - PullRequest
0 голосов
/ 10 мая 2018

Я написал здесь библиотеку авторизации Java под названием jCasbin: https://github.com/casbin/jcasbin. И я хочу написать собственный плагин авторизации для Vert.x, чтобы использовать jCasbin в качестве бэкэнда авторизации (определить, следует ли разрешить запрос на основе правил политики ). Но я не знаю, как это сделать.

Я видел, что в документации Vert.x есть такая страница: https://vertx.io/docs/#authentication_and_authorisation. Но все представленные здесь реализации (например, MongoDB auth, Shiro auth) содержат как аутентификацию, так и авторизацию. Я только хочу предоставить авторизацию. Есть ли способ сделать это? Какие лучшие шаги?

1 Ответ

0 голосов
/ 11 мая 2018

Чтобы реализовать поставщика 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

...