2017-06-22 13 views
0

私のアプリケーションサーバーはJWT認証を使用しています。フロントエンドはリアクションです(ただし、この質問の目的でAngularでもかまいません)。リアクション(または角度)+ JWT認証+セッション/クッキー

ユーザーが初めてログインすると、アプリケーションはユーザー提供のユーザー名+パスワードを交換し、JWTトークンを取得してアプリケーションサーバーに内部APIリクエストを行います。

UXの経験からは、ユーザーが「myapp.com」に行くたびにユーザー名+パスワードを入力する必要はありません。しかしそれは別の問題を提起する。 JWTキーは通常、セキュリティ上の目的で短命であり、古いJWT(しばらくの間)で更新するか、キーの「寿命」後に新しいユーザー名+パスワードで更新する必要があります。

この場合、手間のかからないUXを維持するための一般的な方法は何ですか? JWTキーを不自然に長生きさせ、クッキーを使用してJWTトークンを保持するか、実際にはユーザー名+パスワードをクッキーに保持しますか?この場合、私は非常に驚くだろう。

JWTをユーザーのIPアドレスでエンコードして無期限に使用することは理にかなっていますか?だから、他の誰か(またはユーザー自身)が別の場所を使用している場合、パスワードを再入力して、その場所に不定のキーを取得する必要がありますか?

答えて

0

パターンは、通常、トークンの有効期限をユーザーIDトークンの1日に設定します。アクセストークンには3〜4時間かかるものがあります。

ユーザーがログインすると、ユーザーの資格情報を使用して識別トークンを取得し、localStorageに格納します。次に、私たちが持っているアイデンティティトークンを使ってwebappのクライアントアクセストークンを取得し、sessionStorageにクライアントアクセストークンを保存するという別の要求を出します。

以降のリクエストについては、セッションストレージから取得し、リクエストとともに送信します。

ユーザーがタブ(セッション)を閉じると、アクセストークンは失われ、次にIDトークンを使用して再度開いたときに再び取得されます。

したがって、1日に1回ログインする必要があります。

誰かがトークンを盗んでしまった場合、AESを使用してトークンを暗号化および復号化できます。

これが役に立ちます。