Подтвердить что ты не робот

Стратегия аутентификации для REST API и мобильного приложения

Я создаю сервер API REST с Node.js и Express + MongoDB. Этот API будет иметь различные мобильные клиенты (iOS, Android) и, возможно, веб-приложение позже. Мне нужно, чтобы пользователи входили в систему для выполнения некоторых запросов API. Нет сторонних приложений, с которыми я хочу подключиться (без Facebook, Google и т.д.). Я также не хочу заставить пользователей посещать веб-страницу или что-то в этом роде, чтобы они могли войти в систему.

Из того, что я видел во многих своих поисках в SO, лучшим подходом было бы позволить пользователям входить в систему с полными учетными данными один раз, отправлять им токен взамен и использовать этот токен для проверки будущих запросов до истечения срока его действия.

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

Спасибо!

4b9b3361

Ответ 1

Теперь вы можете использовать Passport.js с JWT (JSON Web Tokens) с Passport-JWT. Он довольно прост в использовании.

Как только пользователь вошел в систему, вы отправляете токен пользователю. Токен содержит данные о пользователе, такие как идентификатор (конечно, кодируется). При последующих запросах (по крайней мере, когда требуется аутентификация) вы убедитесь, что клиент отправляет токен. На сервере вы можете увидеть, кто отправил запрос (и, например, проверить авторизацию пользователя), просто просмотрев токен. Для получения дополнительной информации о том, как работает JWT проверьте это.

Существуют разные способы отправки токена. Просто взгляните на документы, и это будет ясно. Если нет, this также помог мне.

Ответ 3

Мне кажется, вам нужно настроить процесс аутентификации на основе токенов на вашем сервере, чтобы вы могли делать запросы от разных типов клиентов (Android, iOS, Web и т.д.). К сожалению, документация Passport (и учебные пособия на основе Passport), по-видимому, нацелена только на "веб-приложения", поэтому я не думаю, что вы должны использовать ее для этих целей.

Я сделал что-то подобное в этом великолепном учебнике: http://code.tutsplus.com/tutorials/token-based-authentication-with-angularjs-nodejs--cms-22543

Клиентская часть в этом учебнике основана на AngularJS, но может легко применять одни и те же принципы в мобильном клиенте (это всего лишь вопрос создания HTTP-запросов, включая токен, полученный при публикации в "/signin" или "/аутентификации" ).

Удачи!