jwt - Vert.X 检查 JWT token 的过期时间

标签 jwt vert.x

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

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

所有这些都按预期进行。

我的问题是,我希望能够拦截这些/api/* 请求,并在进行 token 身份验证之前检查 token ,以及 token 是否即将过期,以生成可以在 header 中返回的新 token 响应,以便客户端可以在后续请求中使用它。

我想要实现的是:

  1. 避免发放永远有效的 token ,就像泄露一样,我无法阻止对应用程序的访问
  2. 避免维护任何类型的 token 黑名单
  3. 避免必须发行非常短的生存代币并根据每个请求重新发行这些代币

总的来说,任何类型的策略都是受欢迎的。

谢谢

最佳答案

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

路由器router = 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"));

关于jwt - Vert.X 检查 JWT token 的过期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37282043/

相关文章:

java - 一种优雅的异步解决方案,用于从 Java 中的 Vertx worker verticle 将文件从 S3 发送到客户端

java - vertx-redis-客户端 3.7.0 : How to use redis transaction

spring-security - 社交登录,spring-security-oauth2 和 spring-security-jwt?

javascript - router.get 没有参数但要求参数

jwt - 缩放 API : account does not enabled REST API

java - 如何在Linux上部署java vertx服务器?

java - Vertx 中的异步自定义方法

javascript - 如何使用 JWT token 对网站用户进行 FireBase 身份验证?

javascript - 如何在不同子域之间共享localstorage?

java - java rxObservable 的结果集中没有聚合数据