2016-04-14 2 views
0

На самом деле я использую VertX Routher, и у меня есть запрос с авторизации в заголовках и хочу, чтобы найти более подробную информацию о маркере, поэтому я попытался создать KeycloakSecurityContext формы Vert.x RoutingContext используя следующий код:KeycloakSecurityContext от VertX RoutingContext

KeycloakSecurityContext securityContext = (KeycloakSecurityContext) routingContext.session().get(KeycloakSecurityContext.class.getName()); 

Но это не удалось. (NPE, empty seesion.data)

Может ли кто-нибудь подсказать мне, как я могу создать этот контекст Keycloak из маршрута Vertx? В будущем я хочу закончить этот токен, поэтому дополнительные советы приветствуются.

Спасибо,

ответ

1

Там нет контекста безопасности Keycloak в Vert.x Web. Все взаимодействия между Vert.x и Keycloak выполняются по протоколу OAuth2, который не зависит от поставщика, которого вы используете, например: Keycloak, Facebook, Google, Twitter, Linkedin и т. Д.

Начиная с версии 3.3.0 вы сможете использовать гранты keycloak, закодированные в маркете OAuth2, как полномочия администратора Vert.x, чтобы вы могли выполнять не только проверку подлинности, но и авторизацию.

Вот пример:

// Initialize the OAuth2 Library 
    OAuth2Auth oauth2 = OAuth2Auth.createKeycloak(vertx, OAuth2FlowType.PASSWORD, keycloakJson); 

    // first get a token (authenticate) 
    oauth2.getToken(new JsonObject().put("username", "user").put("password", "secret"), res -> { 
     if (res.failed()) { 
     // error handling... 
     } else { 
     AccessToken token = res.result(); 

     // now check for permissions 
     token.isAuthorised("account:manage-account", r -> { 
      if (r.result()) { 
      // this user is authorized to manage its account 
      } 
     }); 
     } 
}); 
+0

спасибо за ответ! – zyxerdima

Смежные вопросы