72

Web アプリケーションと API プロバイダーの両方として使用したい nodejs アプリケーションを作成しています。ユーザーが認証されたら、そのユーザーにトークンを割り当てて、後続のリクエストに使用したいと考えています。セッションでトークンを使用してユーザーをシリアル化および逆シリアル化するだけなので、これは Web アプリケーションのパスポートでうまく機能します。ただし、API リクエストに応答する場合、セッション情報を保存するために設定する Cookie はありません。理想的には、パスポートはセッションとリクエスト本文の両方でトークンを探します。これを達成するためにパスポートを構成する方法はありますか?

4

3 に答える 3

130

すべてのリクエストでアクセス トークンを使用するだけです。セッションを使用する必要はありません。ワークフローは次のとおりです。

POST /signin
  1. ユーザー名とパスワードは、クライアント リクエストでポストされます。
  2. サーバーは、パスポートのローカル戦略を使用してユーザーを認証します。パスポートローカルを参照してください。
  3. 資格情報が有効なユーザーを表している場合、サーバーはジェネレーターによって生成されたアクセス トークンを返します。node-jwt-simpleは良い選択です。
  4. クレデンシャルが無効な場合は、にリダイレクトし/signinます。

クライアントは、認可サーバーからアクセス トークンを受け取ると、サーバー上の保護されたリソースにリクエストを送信できます。例えば:

GET /api/v1/somefunction?token='abcedf'

  1. クライアントは、トークン引数を使用してサーバー API を呼び出します。
  2. サーバーは、パスポートの Bearer Strategy を使用してトークンを認証します。Passport-http-bearerを参照してください。

参考文献

Passport.jsとexpress.js(node.js)でセキュアなoauth APIを作る

于 2013-08-15T03:05:48.587 に答える
7

bnuhero が言及しているように、セッションは必要ありません (ただし、そのアプローチにはメリットもあります)。これは、私がこのために開始しているボイラープレート プロジェクトです: https://github.com/roblevintennis/passport-api-tokens

これは、代わりの簡単な方法です(ただし、セッションを使用します)。良い相互参照になるかもしれません: http://scotch.io/tutorials/javascript/easy-node-authentication-setup-and-local

もう 1 つの参照関連: http://mherman.org/blog/2013/11/11/user-authentication-with-passport-dot-js/

于 2013-12-14T17:46:31.877 に答える