Vert.X检查JWT令牌的到期时间

时间:2016-05-17 16:45:29

标签: jwt vert.x

我有以下情况,在我的vertx应用程序中,我有一个端点/登录,在收到正确的凭据后发出一个有效期为30分钟的JWT。

我使用此令牌来保护/ api / *端点下的所有路由。

所有这些都按预期工作。

我的问题是我希望能够拦截那些/ api / *请求,并且在执行令牌身份验证之前检查令牌以及它是否即将过期以生成可以在头文件中返回的新签名响应,以便客户端可以在后续请求中使用它。

我想要实现的目标是:

  1. 避免永久发布有效令牌,就像泄露我无法阻止访问应用程序一样
  2. 避免维护anykind的令牌黑名单
  3. 避免发出非常短的生活代币,并在每次请求时重新签发
  4. 一般来说,任何一种策略都是受欢迎的。

    由于

1 个答案:

答案 0 :(得分:3)

为了在JWT验证之前处理请求,您需要做的就是在Auth处理程序之前添加自定义处理程序,例如:

路由器路由器= Router.router(vertx);

// Create a JWT Auth Provider
JWTAuth jwt = JWTAuth.create(vertx, new JsonObject()
    .put("keyStore", new JsonObject()
        .put("type", "jceks")
        .put("path", "keystore.jceks")
        .put("password", "secret")));

router.route("/api/*").handler(ctx -> {
  // here do what you're planning to achieve, and the call
  ctx.next();
});

// protect the API
router.route("/api/*").handler(JWTAuthHandler.create(jwt, "/api/newToken"));