2013-10-04 3 views
31

Я понимаю разницу между аутентификацией Passport.js Basic и Digest, но в чем разница между локальной стратегией и Basic или Digest? Во всех трех случаях вы вводите имя пользователя и пароль. Является ли базовая стратегия типом пользователя & аутентификация пароля? Просьба уточнить.Каковы различия между локальной базой и дайджестом в паспорте

ответ

53

Если я правильно понимаю, различия между стратегиями Local, Basic и Digest в Passport.js являются тонкими, но важными. Вот краткое изложение:

Местный (passport-local)

локальная стратегия Passport является простой имя пользователя и пароль схема аутентификации. Он находит пароль пользователя от имени пользователя (или другого идентификатора) и проверяет, соответствуют ли они. Основное различие между локальной стратегией и двумя другими стратегиями заключается в использовании постоянных сеансов входа в систему. Эта стратегия должна использоваться по протоколу SSL/TLS.

Basic (passport-http)

Базовая стратегия реализуется Passport выглядит почти идентично местной стратегии, с одной тонкой разницей. Основная стратегия должна использоваться с конечными точками API, где архитектура не имеет статуса. В результате сеансы не обязательно, но могут быть использованы. Эта стратегия также должна использовать SSL/TLS. Флаг сеанса может быть установлен следующим образом:

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

Digest (passport-http)

стратегия дайджеста тонко отличается от двух других стратегий, в том, что она использует специальный парадигму запрос-ответ, с тем чтобы не отправляйте пароль в открытом виде. Эта стратегия будет хорошим решением, когда SSL/TLS не будет доступен.

Это хорошая статья на Основном против Digest: How to Authenticate APIs

Примечание: Все три стратегии делают поддержку сессии необязательными. Эти две стратегии паспортного HTTP позволяют установить флаг сеанса в то время как паспорт docs говорить об этом, о паспортной локальной стратегии:

Обратите внимание, что включение поддержки сеанса совсем не обязательно, хотя и рекомендуется для большинства применений.

+2

«Основная стратегия должна использоваться с конечными точками API, где архитектура без гражданства» - что вы подразумеваете под апатридом? Можете привести несколько примеров?Если я правильно понимаю, локальная стратегия - это «Если вы уже поддерживаете пользовательские сеансы, например, чтобы сохранить временные переменные за сеанс, тогда cookie уже идентифицирует сеанс, и бессмысленно отправлять имя пользователя и пароль каждый раз ». – Oren

+3

Основная стратегия использует заголовок 'authentication' для аутентификации, см. Https://github.com/jaredhanson/passport-http/blob/master/lib/passport-http/strategies/basic.js#L68 – Vadim

+0

@Vadim Спасибо! ! u сохранить мою жизнь :) –

2

Если вы используете локальную стратегию паспорта: - сеанс установлен, поэтому вам не нужно отправлять кредиты по каждому запросу; - имя пользователя и пароль указаны в заголовках «username» и «password» по умолчанию;

Если вы используете стратегии Passport Basic/Digest: - сеанс не используется, поэтому вы должны предоставить учетные данные при каждом вызове API; - имя пользователя и пароль/хэш содержатся в заголовке «Авторизация»;

Смежные вопросы