2017-02-12 9 views
0

JWTの検索を開始したばかりですが、最初に見た例では、ユーザー名とパスワードをプレーンテキストで含むリクエストの本文でPOST要求を行う必要があります。 この要求が認証された後、JWTが送信され、それ以降の要求が使用されます。JWTを使用してユーザー名、パスワードを送信して認証する

明らかに私はここに何か不足していますが、最初のリクエストで安全でないデータを送信しただけではありませんか?これでHTTPSが必要なのでしょうか?

+1

はい、https – webdeb

+0

@ webdebありがとうございます。私にウェブトークンを与えるサーバに電話をかけ、ユーザ名/パスワードを送信するとどうなりますか?それは働くだろうか?また、私はhttpsを持っている場合、私はHTTPSとの最初の呼び出しを行うだけで、残りはWebトークンで行われますか? –

答えて

3

JWTでは、信頼できない権限によってトークンが変更されていないことを確認することが重要です。内部のデータが正しいことを確認するだけです。

しかし、JWT自体のデータブロックは誰でも読めるので、クライアント上でそれを解析し、必要に応じてuserName/email /を読んで攻撃者が読むことができますデータブロック自体が暗号化されていない場合も同様です。

HTTPSは、クライアント< - > serverの間で渡されるすべてのデータを暗号化します。それは認証とは何の関係もなく、ちょうどプロトコルなので、とにかくJWTと一緒に使うべきです。

1

JWTは以前にサーバーに既に認証されているユーザーを認証するために使用され、ステートフルな環境ではなくステートレス環境で本当に便利です。

JWTの目的は、十分なデータをユーザに保存することで、受信したサーバがそれを使用してユーザが正当なものか、自分ができることを判断できるようにすることです。分散環境ではJWTをあるサーバーから別のサーバーに渡すだけで、署名キーを保持している限り、トークンに基づいてユーザーを認証できます。

ユーザー名とパスワードは、最初のリクエストでサーバーにのみ必要なので、サーバーはユーザーのデータベースに対してユーザーを認証し、その後はすべてのトークンを使用してサーバーを作成しますすべての要求に対してデータベースへの別のラウンドトリップなしでユーザーを認証することができます。

HTTPSが実行される限り、私はそれをすべてのものに使用します。世界中の今日のワイヤレスネットワークでは、データは従来よりもはるかに公開されています。

関連する問題