2016-02-19 7 views
10

私は以前にJWTトークンのセキュリティに関して長い質問をしましたが、ここではJWTトークンの取り消しに特に注目したいと思います。私は、モバイルアプリケーションのモバイルクライアントを認証するための主な認証メカニズムとしてJWTを使用しています。私の質問です:トークンの取り消しを実装する価値がありますか?現在、私はトークンの寿命が短く、TLSに依存しているため、権限のないユーザーによってトークンが盗まれるのを防ぎます。トークン取り消しを実装していません。しかし、基本的には、トークンがどうにか盗まれた場合、トークンを取り消す方法がないということです。もっと懸念されるのは、ユーザーがアプリケーションからログアウトしたときに、最後に使用したトークンが取り消せない場合でもそれが動作するということです。また、発行されたトークンを追跡していないので、ユーザーが要求できるトークンの数に制限を付けることはできません。発行されたすべてのトークンをデータベースに格納し、トークンを取り消して規制する多くのアプリケーションを見てきました。しかし、これはJWTを使う目的を打ち負かしているようです。そのような複雑さを加える価値があるのですか、現在のシステムは安全ですか?JWTトークン取消しはそれに値するでしょうか?

ありがとうございます。私はどんな助けにも感謝します。

答えて

3

価値があるかどうかは、ここに誰でも評価するのが難しいかどうかです。それはあなたが守っているものと、軽減しようとしているリスクによって異なります。

トークンを取り消す必要があると判断した場合は、reference tokensを使用できます。これらのトークンを消費するサービスは、認可サーバーと通信してスケーラビリティを低下させ、単一障害点を引き起こします。

トークンの盗難を防ぐために開発された取り組みがあります。 Token Binding ProtocolProof Key for Code Exchange by OAuth Public Clientsを見てください。

+0

ありがとうございました。それは有り難いです。これは本当に役に立ちます。 –

+0

あなたは歓迎です。答えが役に立つ場合は、アップボートボタンを使用してください。そして、1つの答えを受け入れたものとしてマークすることを忘れないでください。 – MvdD

4

私は、誰かがそれをどのように確保したかにかかわらず、トークンを抽出できる可能性を考慮する必要があると思います。あなたが制御できないデバイス上に存在します。

トークンを渡すのではなく、クライアントとサーバーとの秘密鍵を交渉してみませんか?彼らはそのキーを使ってサーバーへのリクエストに署名し、そのシークレットを追跡することができます。誰かがサインアウトした場合でもそのキーを取り消すことさえできます。これにより、シグネチャの有効期限を低く抑えることができます。キャプチャされていても、数分間有効です。

+0

ありがとうトラビス。あなたが正しい。誰かがクライアントの電話にアクセスすると、クライアントのアカウントが完全に侵害されます。私はあなたの方法を調べます。 –

+1

"クライアントとサーバーとの秘密鍵をネゴシエートする"はかなり大きな波です。ネゴシエートされた一元的に格納された秘密鍵は、交渉された一元的に格納されたJWTとどのように異なっていますか? –

関連する問題