2013-10-04 9 views

答えて

53

私が正しく理解していれば、Passport.jsのローカル、基本、およびダイジェスト戦略の違いは微妙ですが重要です。ここで荒廃です:

ローカルpassport-local

パスポートのローカル戦略は、単純なユーザ名とパスワードの認証方式です。ユーザー名(または他の識別子)から特定のユーザーのパスワードを見つけ、一致するかどうかを確認します。ローカル戦略と他の2つの戦略の主な違いは、永続的なログインセッションの使用です。この戦略は、SSL/TLSで使用する必要があります。

基本passport-http

パスポートによって実現基本戦略は、一つ微妙な違いで、局所戦略とほとんど同じに見えます。基本的な戦略は、アーキテクチャがステートレスであるAPIエンドポイントで使用することです。その結果、セッションはではなく、である必要はありますが、使用できます。この戦略では、SSL/TLSも使用する必要があります。セッションフラグがそうように設定することができる。

app.get('/private', passport.authenticate('basic', { session: false }), function(req, res) { 
    res.json(req.user); 
}); 

ダイジェストをpassport-http

ダイジェスト戦略は、それがするように、特別なチャレンジ - 応答パラダイムを使用することで、他の2つの戦略よりも微妙に異なっていますパスワードをクリアテキストで送信しないでください。この戦略は、SSL/TLSが利用できない場合の良い解決策になります。 How to Authenticate APIs

注:すべての3つの戦略は、セッションサポートをオプションに

これは基本的な対ダイジェストに良い記事です。

注それは、ほとんどのアプリケーションで推奨されているが、セッションのサポートを有効にすると、完全にオプションであること:2パスポート-HTTP戦略はパスポートdocsはパスポートローカル戦略について、これを言うしながら、あなたはセッションフラグを設定することができます。

+2

"基本的な戦略は、アーキテクチャがステートレスであるAPIエンドポイントで使用することです" - ステートレスとはどういう意味ですか?いくつか例を挙げることができますか?もし私が正しいことを理解していれば、ローカル戦略はちょうど「セッションごとに一時変数を保存するなど、ユーザーセッションを既にサポートしている場合は、そのセッションをすでに識別しており、毎回ユーザー名とパスワードを送信するのは無意味です" – Oren

+3

基本的な戦略では、認証に 'authentication'ヘッダを使用しています。https://github.com/jaredhanson/passport-http/blob/master/lib/passport-http/strategies/basic.js#L68 – Vadim

+0

@Vadim Thanks !! !あなたの人生を救います:) –

2

Passport Local戦略を使用している場合: - セッションが確立されているため、各リクエストでクレジットを送信する必要はありません。 - ユーザー名とパスワードは、デフォルトで "username"と "password"ヘッダーで提供されます。

Passport Basic/Digest戦略を使用している場合: - セッションは使用されないため、すべてのAPI呼び出しで資格情報を提供する必要があります。 - ユーザー名とパスワード/ハッシュは、「承認」ヘッダーに含まれています。

関連する問題