Сбой аутентификации при доступе к маршрутам CRUD через Postman и httpie
Я использую Express-Stormpath для управления пользователями в моем приложении Express. Я использую стандартный способ входа в Stormpath и методы, требующие только электронную почту и пароль. Тем не менее, я не знаю, действительно ли проблема связана со штормом. При тестировании некоторых маршрутов CRUD я уверен, что ввел правильные учетные данные, но аутентификация не удалась. Ну, это не терпит неудачу сразу; Я получаю статус 200 или 302 и перенаправлен обратно на страницу входа.
Команда, которую я использую с httpie:
http --verbose -a username@email.com:password localhost:3000/api/users
Вывод вышеуказанной команды httpie:
Для Postman (клиент Chrome REST) я использую помощника Basic Auth.
Однако вход в приложение через веб-клиент работает.
Что здесь происходит?
Редактировать 1
Вот как я защищал маршруты:
app.use('/', stormpath.loginRequired, routes);
app.use('/api/users', stormpath.apiAuthenticationRequired, users);
2 ответа
Я работаю в Stormpath, и я должен быть в состоянии помочь. Не могли бы вы показать нам, как вы защищаете /api/users
маршрут? Вам нужно будет использовать stormpath.apiAuthenticationRequired
промежуточное ПО, если вы хотите использовать обычную аутентификацию.
Я автор этой библиотеки - просто хотел присоединиться.
Проблема здесь в том, что вы проходите аутентификацию с вашим именем пользователя и паролем - это НЕ так, как работает наша аутентификация API.
Что вам нужно сделать, это сначала создать ключ API для вашей учетной записи пользователя, а затем использовать его для аутентификации.
Вот пример того, как создать ключ API для учетной записи пользователя:
req.user.createApiKey(function(err, key) {
res.send('New API key created: id=' + key.id + ' secret=' + key.secret);
});
Это предоставит новый ключ API для вашего пользователя и выведет его.
Когда у вас есть ключ API (он состоит из двух частей, идентификатора и секретного ключа), вы можете сделать запрос:
http --verbose -a apikeyid:apikeysecret localhost:3000/api/users
Надеюсь, это поможет =)