0

实际上我正在使用 Vertx Routher,并且我在标头中有一个带有Authorization的请求,并希望找到有关令牌的更多信息,因此我尝试使用以下代码从 Vert.x RoutingContext创建KeycloakSecurityContext :

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

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

谁能提示我,如何从 Vertx 路由创建 Keycloak 上下文?将来我想终止该令牌,因此欢迎提供额外提示。

谢谢,

4

1 回答 1

1

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

从 3.3.0 版本开始,您将能够使用在 OAuth2 令牌中编码的 keycloak 授权作为 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
          }
        });
      }
});
于 2016-06-09T14:47:49.050 回答