来自vertx RoutingContext的KeycloakSecurityContext

时间:2016-04-14 22:01:42

标签: java jsp servlets vert.x keycloak

其实我使用的是Vertx Routher,我在标题中有授权的请求,想要查找有关令牌的更多信息,因此我尝试创建 KeycloakSecurityContext 使用以下代码形成Vert.x RoutingContext:

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

但它失败了。 (NPE,空的seeion.data)

任何人都可以提示我,我如何从Vertx路线创建Keycloak Context?将来我想终止那个令牌,所以欢迎额外的提示。

谢谢,

1 个答案:

答案 0 :(得分:1)

Vert.x Web中没有Keycloak安全上下文。 Vert.x和Keycloak之间的所有互动都是通过OAuth2协议完成的,该协议独立于您使用的供应商,例如:Keycloak,Facebook,Google,Twitter,Linkedin等......

从版本3.3.0开始,您将能够使用OAuth2令牌中编码的keycloak授权作为Vert.x auth权限,因此您不仅可以进行身份​​验证,还可以进行授权。

这是一个例子:

// 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
          }
        });
      }
});