2016-12-12 13 views
0

私は最初のノード+ expressアプリケーションを作成しています。外部APIを呼び出すnpmモジュールを使用しています。ノードexpressは外部apiからの認証トークンを処理します

ログインページには、ユーザーがクレデンシャルを入力し、ポスト(ajaxクライアント側、app.postサーバー側)に渡され、最初のAPI呼び出しを使用するフォームがあります。 npmモジュール)、authトークンを返します。すべての結果的なapi呼び出し(npmモジュールを使用)は、そのトークンを使用して行われます。

私の質問は:そのトークンを処理するにはどうすればよいですか?変数/オブジェクトに保存してエクスポートしてから、トークンが必要なjsファイルにエクスポートする必要がありますか?セッションを使用する(おそらくユーザーに再ログインを要求しないようにするのがよいでしょう)、そのセッションにトークンを保存しますか?

答えて

0

私は、ユーザーがサーバーにそれらのユーザー名/メールアドレスとパスワードthensednにログインしようとすると

は今

  1. を使用する方法トークンを生成するためにjsonwebtokenモジュールを使用することをお勧めします。
  2. 有効なjwt.signメソッドを使用してuserId(またはユーザーを一意に識別する値)を含むトークンを生成する場合は、ユーザーの資格情報を確認します。
  3. ログイン要求に応答してそのトークンを送信します。

  4. クライアント側のトークンを受信すると、サービスによって保存されます。 APIへの後続の呼び出しを行うとき

    (すべてのAPI呼び出し-client側時)

  5. リクエストにそのトークンを追加します(私はこの認可のベアラ(トークン)のようなAuthorizationヘッダにそれを追加することをお勧め。

    (すべてのAPI呼び出し時 - サーバ側)

  6. サーバはAPIリクエストを取得するときに今では、リクエストヘッダからトークン取得しjwt.verifyメトを使用して、トークンの有効性を確認します要求がトークン検証段階を通過すると、応答して要求されたデータを送信することができます。

    注:トークン検証ステージを追加するには、エクスプレスのミドルウェアの概念を使用できます。これを行うには、あなたがjwt.verify使用し、その認証モジュールを必要とし、私はどのように理解しない

+0

ミドルウェアとしてAuth.verify方法を置くことができていると呼ばれる方法で検証をエクスポート別々の認証モジュールを作成することができ、そのここでjwtを使用すると便利です。最初の呼び出しをするときに、外部のAPIから取得するトークンを格納する必要があります。 – nip

+0

LocalStorage/SessionStorage(XSS攻撃とも呼ばれるクロスサイトスクリプティングの脆弱性)またはCookie(Cross Siteの脆弱性)に保存する2つのオプションがあります。 JWTをWebアプリケーション用のクッキーに保存することをお勧めします。なぜなら、追加のセキュリティと柔軟性が提供され、最新のWebフレームワークでCSRFからの保護が簡単だからです。 HTML5 Web StorageはXSSに対して脆弱であり、攻撃対象面積が大きく、攻撃が成功するとすべてのアプリケーションユーザーに影響を与える可能性があります。 –

関連する問題