2017-05-21 10 views
0

私はJSON Webトークン(JWT)をはじめて使用しています。私はHydra-Expressフレームワークを使ってNode.jsアプリケーションを作っています。 JWTを認証に使用したい。ドキュメントごとに、JSONトークンをフロントエンドに返します。ブラウザにJWTを保存するには?

var tokenData = { 
    username: req.body.username, 
}; 

var result = { 
    username: req.body.username, 
    token: jwt.sign(tokenData, 'secret', { expiresIn: 60 * 60 }) 
}; 

res.json(result); 

しかし、私はそれが失われないと、再びヘッダと一緒にバックエンドに送信されるように、私のブラウザのヘッダーにこのJSONトークンを保存する方法がわかりません。 ブラウザストレージに保存して、リクエストがバックエンドに送信されるたびにリクエストヘッダに追加する方法はありますか?

+0

必要に応じて、ブラウザのストレージが推測するように、cookie、localStorage、WebSQLを使用することもできます。それでも、私はあなたがこの記事を読むことをお勧めします:http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions/ – Booster2ooo

答えて

0

あなたはユーザーHTML5のWebストレージまたはクッキーは、あなたのJWTは、トークン格納し、あなたがウェブAPIへのリクエストを送りたい時はいつでも、それから読み取ることができます。

このlinkは、あなたのアプリに最も適したマッチの決定に役立ちます。

希望すると助かります!

0

それはペイロードがそれからちょうどペイロード

var enc = json.access_token.split(".")[1]; 

そのheader.payload.signature部品やグラブにJWTトークンを分割アクセスするのsessionStorage

sessionStorage.token = json.access_token; 

に店に戻っあなたトークン全体来ますbase64を解析する

var payload = JSON.parse(window.atob(enc)); 

次に、検証されたpayloを取得して使用することができます広告データ payload.sub、payload.role ...など

0

セキュリティアドバイス:短いそれを維持しようとすると

: クッキー(HTTPのみ& secureフラグ)はXSS CSRFに対してではなく、脆弱です。 を含める:クッキー ストア内 店JWTのlocalStorageでcsrf_token

はそれがステートレスにするには:のlocalStorageで JWTはXSSはなく、CSRFあなたができる最善のリスクを最小限にすることである

に対して脆弱ですJWTのペイロードのcsrf_tokenとJWTのcsrf_tokenとcsrf_tokenがlocalstorageから読み込み、ヘッダーと一致するかどうかを調べます。

これはXSSを通じてcsrf_tokenを取得するには、攻撃者が必要です(例えば、あなたのサイトに妥協し、サードパーティのJSライブラリを使用するか、衛生を適用しない) そして、彼はcsrf_tokenでCSRF要求をトリガする必要があります(たとえば、埋め込まれたIMG srcタグまたはフォームをウェブページ/電子メールで送信)

この組み合わせにより、攻撃者にとってはますます難しくなりますが、不可能ではありません。

これは、csrf_tokensによる通常のセッションベースの認証と同じセキュリティレベルを提供しますが、状態は必要ありません。