Задать вопрос
@serious911

Авторизация через социальные сети и RESTful API в мобильном приложении?

Работаю над мобильным приложением, в котором нужно сделать авторизацию через социальные сети (Facebook, VK, OK и т.п.), а также взаимодействовать с собственным API сервером.

Подключил SDK от Facebook и сделал авторизацию через Facebook как описано в документации. Все работает хорошо и в результате авторизации я получаю access_token и информацию о пользователе FB. Примерно аналогично будет проходить авторизация и через другие соц. сети.

Дальше мне нужно каким-то образом авторизоваться на собственном сервере для дальнейшего использования API. Вопрос в том как это правильно и безопасно сделать?

Проблема в том, что это не обычная авторизация через email/пароль, где после регистрации/авторизации пользователю можно выдать какой-нибудь токен и отправлять его в каждом запросе к API. Также можно запросить подтверждение E-mail адреса. Здесь после авторизации через FB я получаю access_token, id и другую информацию о пользователе, а дальше на основе этих данных мне нужно создать нового пользователя у себя в БД или выдать существующего. В этом и проблема.

Выглядеть это будет как обычный POST запрос к моему серверу, в котором будет отправлена информация о пользователе (id, имя и т.п), но как подтвердить эту информацию? Можно не подтверждать и все будет работать, но если какой-нибудь злоумышленник узнает как и куда отправить подобный запрос на мой сервер, то он сможет без проблем генерировать сотни/тысячи пользователей у меня на сервере и я не смогу узнать реальные ли это пользователи. Это не авторизация через OAuth, где я получаю информацию о пользователе через callback с серверов FB/VK.

Подскажите, пожалуйста, как правильно это сделать? А также как сделать дальнейшее взаимодействие с API сервером в плане безопасности (создание токенов, подпись запросов, проверка токенов и т.п.).

Спасибо.
  • Вопрос задан
  • 1475 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
profesor08
@profesor08
Вот среди других данных и будет email пользователя, а так-же его имя. Вот этот самый email и может служить идентификатором. Еще среди тех данных будет id пользователя в соц сети, его тоже можно добавить как дополнительный идентификатор. Вот этими данные и заполняй базу пользователей.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы