Токен

Я пишу приложение nodejs, которое я хотел бы использовать как как веб-приложение, так и поставщик API. После аутентификации пользователя я хочу назначить этому пользователю токен, который будет использоваться для последующих запросов. Это отлично работает с паспортом для веб-приложения, так как я просто сериализую и десериализую пользователя с токеном в сеансе. Однако при ответе на запросы API нет файлов cookie для установки информации о сеансе. В идеале паспорт будет искать токен как в сеансе, так и в теле запроса. Есть ли способ настроить паспорт для этого?

Ответ 1

Просто используйте токен доступа для каждого запроса. Использование сеанса НЕ необходимо. Ниже приведен рабочий процесс:

POST /signin
  • Имя пользователя и пароль отправляются в запросе клиента.
  • Сервер аутентифицирует пользователя, используя локальную стратегию паспорта. См. passport-local.
  • Если учетные данные представляют действительного пользователя, сервер возвращает токен доступа, сгенерированный каким-то генератором. node-jwt-simple - хороший выбор.
  • Если учетные данные недействительны, перенаправляйтесь на /signin.

Когда клиент получает токен доступа с сервера авторизации, он может затем делать запросы на защищенные ресурсы на сервере. Например:

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

  • Клиент вызывает некоторый сервер api с аргументом токена.
  • Сервер аутентифицирует токен, используя Стратегию переноса паспортов. См. passport-http-bearer.

Ссылки

Создайте безопасный API oauth с паспортом. js и express.js(node.js)

Ответ 2

Поскольку bnuhero упоминает, что вам не нужны сеансы (хотя этот подход имеет и свои достоинства). Здесь проект котловой плиты, который я начинаю для этого: https://github.com/roblevintennis/passport-api-tokens

Здесь альтернатива и легко следовать tut (но она использует сеансы). Может быть, хорошая перекрестная ссылка: http://scotch.io/tutorials/javascript/easy-node-authentication-setup-and-local

И еще одна ссылка: http://mherman.org/blog/2013/11/11/user-authentication-with-passport-dot-js/