私はjson Webトークンを使用してノードアプリケーションを持っています:json webトークンはどこにデータを保存しますか?
var jwt = require( 'jsonwebtoken');
ログインsuccedes場合、このライブラリは、このようにトークンを作成します。トークンがサーバー上に格納されている場所、私は理解していない何
var payload = {mydata: 'abcd'};
var token = jwt.sign(payload, 'secret', {
expiresIn: 28800
});
return {
success: true,
message: 'Success',
token: token
};
です。 トークンを受けた同じユーザーが、私はこの行を持って、保護されたリソースへの呼び出しを行った場合:
jwt.verify(token_sent_by_used, 'secret', function (err, res) {
if(!err){
res.json({result: 'success'});
}
else{
res.json({result: 'failure'});
}
}
イムがこれを求めている理由は、実行しているとき、私はJWTを扱う方法についての説明を見つけることができなかったということです複数のマシンにまたがるアプリケーション。 私のバックエンドが別のマシンに置かれ、ユーザーがロードバランサに要求を行うと、その要求はどのマシンにも当てられます。 jwtがファイルシステムにトークンデータを書き込む場合、要求がトークンを作成したマシンでないマシンにヒットした場合、問題が発生する可能性があります。 セッションを使用する場合は、セッションハンドラをデータベースに設定できます。あなたはjwtでこれをどのように解決しますか?
**** **** EDIT
[OK]を、のはeaxmpleてみましょう。 マシン10で動作しているノードアプリケーションとマシン11で動作しているノードアプリケーションが同じです。 2つの異なるマシン。
私はマシン10に行き、ユーザー名パスワードを送信します。マシン.10のアプリケーションはユーザー名/パスワードをチェックします。オッケー。 Machine .10はjwtトークンを作成して私に送ります。
これで、.11を処理するための(有効なjwtトークンを必要とするリソースへの)カール要求を行い、貴重に送られたjwtトークンを貴方に送ってきました。 Machine .11はjtw-tokenについて不平を言いませんか?それは有効と考えられますか?マシン11で作成されていない場合でも、
Jwtトークンはサーバーに格納されません。 jwtトークンサーバーを作成した後、そのトークンをユーザー/ブラウザーに送信します。そのトークンは、アプリ状態、ブラウザのローカルストレージまたはブラウザのセッションストレージのいずれかに保存できます。 –
編集した質問をご覧ください。 – oderfla
Jwtトークンはマシンとは関係ありません。トークンの復号化/暗号化には、両方のマシンで同じ秘密鍵が必要です。 –