2013-03-18 31 views
7

私はいくつかの質問を持っています? 1つのREST APIサーバーをコーディングしてバックエンドとして使用するほうがずっと簡単だと思います。Node.jsのは、REST API認証とのOAuth2

2)oauth 2標準でWebアプリケーション認証を作成すると、自分の秘密のトークンをCookieに保存するのに適していますか?私はこれがCSRFの脆弱性を引き起こすと思います。

passport.jsはFacebookやtwitterなどの秘密トークンを保存するためにクッキーを使用しています... この場合、CSRFはどうなっていますか?

答えて

11

これは非常に興味深い質問ですが、私はまだ誰も答えていないことに驚いています。

1)最初の質問には、私の答えは間違いなくはいです! APIロジックを2回書く必要はありません。

あなたができることは、異なるURLを使用することです。

例:パブリックAPIの場合はhttp://api.domain.com/objects/を使用しますが、内部のものについてはhttp://domain.com/api/objects/などを使用できます。

次に、同じロジックを使用しますが、認証方法は異なります。多くの一般的なAPI(Twitter、Facebookなど)やpassport.jsのログを使用するプライベートなものなど、認証トークンを持つ公開されたもの。

分離の良いところは、次のとおりです。

  • あなたは、あなたのアプリが大量のデータを転送する(とアプリあなたに高い優先順位を与えたい場合は、アクセス帯域幅を制御できるセキュリティ問題
  • を分離。 ...も、おそらく!)
  • それとも単にあなたは、権限(例えば制御することができます。何のパブリックAPIを介して削除しない)

2)私は、セキュリティの第一人者ないんだけど、私は間違いなくパスポートを信頼します。 js認証システムです。これは、ノードをバックエンドとして使用する場合に広く使用されているためです。

あなたは急行にCSRFのセキュリティを実現するために、この質問を参照できます。How to implement CSRF protection in Ajax calls using express.js (looking for complete example)?

それとも別の戦略は、あなたが戦略を接続するFBやTwitterを使用している場合はリフレッシュトークンを使用することです。

希望します。

関連する問題