web-dev-qa-db-ja.com

passportjsのローカルの基本戦略とダイジェスト戦略の違いは何ですか

Passport.jsの基本認証とダイジェスト認証の違いは理解していますが、ローカル戦略と基本認証またはダイジェストの違いは何ですか? 3つすべてで、ユーザー名とパスワードを入力します。基本戦略は一種のユーザーとパスワード認証ですか?どうか明らかにしてください。

36

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

Localpassport-local

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

基本passport-http

Passportによって実装される基本的な戦略は、ローカルの戦略とほとんど同じですが、わずかな違いがあります。基本的な戦略は、アーキテクチャがステートレスであるAPIエンドポイントで使用することです。その結果、セッションは不要ですが、使用することができます。この戦略では、SSL/TLSも使用する必要があります。セッションフラグは次のように設定できます。

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

ダイジェストpassport-http

ダイジェスト戦略は、他の2つの戦略とは微妙に異なり、パスワードをクリアテキストで送信しないように、特別なチャレンジ/レスポンスパラダイムを使用しています。この戦略は、SSL/TLSが利用できない場合に適したソリューションです。

これは、ベーシックとダイジェストの良い記事です: APIを認証する方法

注:3つの戦略はすべて、セッションサポートをオプションにします。 2つのpassport-http戦略を使用すると、passport docs がこれを言っている間に、passport-local戦略に関してセッションフラグを設定できます。

セッションサポートの有効化は完全にオプションですが、ほとんどのアプリケーションで推奨されています。

61
Glen Selle

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

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

4
Igor Vasilev