来自 vertx RoutingContext 的 KeycloakSecurityContext

KeycloakSecurityContext from vertx RoutingContext

实际上我正在使用 Vertx Router,我在 headers 中有一个带有 Authorization 的请求,想找到有关令牌的更多信息,所以我尝试了使用如下代码创建 KeycloakSecurityContext 形式 Vert.x RoutingContext:

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

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

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

谢谢,

Vert.xWeb 中没有 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
          }
        });
      }
});