2017-03-23 21 views
0

私のnodejsアプリケーションでは、認証にjwtトークンを使用しています。トークンが作成されると、検証されます。そのためには、検証のためにどこかに格納する必要があります。だから、私の質問は、別のデータベースのスキーマを関係するユーザIDに格納するか、別の場所に保存すべきかどうかです。サーバー側の認証にjwtトークンを格納する必要があります

答えて

3

JWTをサーバー側に格納する必要はありません。 JWTを作成するときは、秘密を使って暗号化します。これを「パスワード」と考えてください。次に、それをクライアントに送信して、そこに保存することができます。

クライアントがリクエストを行うと、クライアントはリクエストと共にJWTを送信します。サーバー側では、同じ秘密を使用して復号化することができます。シークレットが機能しない場合、それは無効なJWTであることがわかります。

明白な理由から、あなたのJWT秘密は秘密にしておく必要があります。これを行う最善の方法は、環境変数として格納することです。

+0

と仮定、私は環境変数内のすべてのこれらのトークンを生成するために使用された、あなたの言うあたりのように、私べき唯一の店の秘密、だから、異なるクライアントが異なるJWTのトークンを持って、クライアント側からの複数の要求を持っています。それとも私はそれを間違って解釈しましたか? –

+1

修正。たとえば、ユーザーがログインしたときに、IDと電子メールアドレスをJWTに保存することができます。それはあなたの秘密で暗号化されます。そのユーザーがリクエストを行うたびに、そのIDと電子メールアドレスを生成するのと同じ秘密で解読し、誰がリクエストを行ったのかを知ることができます。あなたは秘密を知っている唯一の人なので、あなたはすべてのJWTに同じ秘密を使うことができます。 –

1

JWTをサーバー側に格納する必要はありません。これは、JWTがサーバー側で「非同期」トークン検証を可能にするための要点です。ここで

は、簡単な方法で入れて、関連する一連の手順です:

1 - サーバーは、彼らが1以上であれば、同様に重要である、サーバ・ノード間でこの秘密を維持すること(秘密を使ってJWTを作成しますクライアントは、指定されたJWTとそれらのサーバ)のいずれかに

2-クライアント格納このJWTを接続し、サーバ

3-サーバ(又はにおける任意のサーバノードに後続のリクエストでそれを供給することができファーム)は、先にJWTを暗号化/作成するために使用された秘密に基づいて着信JWTを確認します

HTH

関連する問題