2016-05-17 5 views
0

次のシナリオがあります。私のvertxアプリケーションでは、正しい資格情報を受け取った後に有効期限30分のJWTを発行するエンドポイント/ログインがあります。Vert.X期限切れのJWTトークンを検査する

私はこのトークンを使用して、/ api/*エンドポイントのすべてのルートを保護しています。

これはすべて期待どおりです。

私の問題は、これらの/ api/*要求を傍受でき、トークンの検査のためにトークン認証を行う直前で、トークンを検査する直前に、レスポンスのヘッダーが含まれているため、クライアントはそれを結果的な要求に使用できます。

私は何を達成したいことは次のとおりです。永遠に有効なトークンを発行

  1. 回避漏れた私が持っanykind
  2. 回避のトークンブラックリストを維持するアプリケーション
  3. 回避へのアクセスを防止する方法がありませんかのように非常に短いリビングトークンを発行し、すべてのリクエストでそれらを再発行すること。

一般的にはあらゆる種類の戦略を歓迎します。

おかげ

+0

同じルートを複数回追加しようとしましたか? http://vertx.io/docs/vertx-web/java/#_route_order – alexvetter

+0

こんにちは@alexvetter、私は経路を傍受するのに問題はありません、私の問題は、トークンを検査する仕組みです。 。私がおそらく注目していないことの1つは、私がjavascriptを使用しているということです。 – bulforce

+1

Mhm、JWTはヘッダーに含まれ、['JWTAuthHandlerImpl'](https://github.com/vert-x3/vertx-web/blob/master/vertx-web/src/main/java/io/) vertex/ext/web/handler/impl/JWTAuthHandlerImpl.java)はヘッダーを解析します。おそらく、あなたは 'JWTAuthHandlerImpl'に似た何かを実装する必要があります。 – alexvetter

答えて

2

JWTの検証の前に要求を処理するためにあなたが認証ハンドラ例えば:

ルータルータ= 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")); 
関連する問題