2017-05-15 5 views
0

RESTful API経由でバックエンドと通信するAngular Webアプリケーションを開発しています。現在、JWTを使用して状態(現在のユーザーIDなど)を保存しています。私はNode.js-ExpressアプリケーションでJWTを実装するためにjsonwebtokenとpassport-jwtパッケージを使用します。Node.js - Expressバックエンドを使用したJWTでの秘密情報の保存

時には、セッションに関連するいくつかの情報(たとえば、秘密の暗号化キー)を状態に保存する必要があるかもしれませんが、ユーザーはそれを知るべきではありません。

JWTペイロードは署名されていますが暗号化されていないため、その内容はデコードする人にとっては明白です。秘密のコンテンツを直接ペイロードに格納することは適切ではありません。私はJWT文字列全体か、ペイロード内の秘密変数値のどちらかの自己作成暗号化を実装することができますが、これを処理する "正しい"または "伝統的な"方法を探しています。

答えて

0

最善の方法は、バックエンドに保存することです。何らかの永続的な記憶域でハッシュ化することをお勧めします。

これが不可能な場合は、JWTに保存できますが、データを暗号化してから入力する必要があります。

おそらくBcryptはまだ安全である最も簡単な解決策はhttps://www.npmjs.com/package/bcryptjsです。暗号化の速度が遅くなるほどセキュリティが強化されることに注意してください。

+0

bcryptは、暗号化方式ではなく、ハッシュ方式としてのみ有効ですか? OPのようなソリューションが必要です。私は "知られてはいけない"部分について疑問を抱いています。ユーザーがその情報を見つけても危険なのでしょうか? –

+0

特定の例は2因子認証です。コードはサーバー側で生成され、他のメディア(たとえばSMSメッセージ)を介してユーザーに渡される秘密シードに基づいています。このデータは状態で保存する必要がありますが、API通信では観測できません。 – Passiday

関連する問題