Я хотел бы создать небольшое мобильное приложение (Android и iOS) и небольшой сервер с REST Api.
Мои пользователи приложений (Android или iOS) должны войти в систему на facebook. Я делаю это, используя мобильную sdk на facebook. Когда логин был успешным, facebook sdk вернет authentificationToken, то есть теперь на смартфоне пользователей.
Идея такова: Всякий раз, когда моему приложению нужны некоторые данные, приложение будет подключаться к моему серверу (REST) через HTTPS. Например: приложение делает простой HTTP GET и передает полученную аутентификацию FacebookToken. Мой сервер получает эту аутентификацию facebookToken и использует этот токен для определения, если пользователь аутентифицирован и получает информацию профиля facebook (имя, фамилия и т.д.). Таким образом, сервер также связывается с facebook и генерирует персонализированный ответ для запроса HTTP GET.
Мои вопросы:
- Достаточно ли достаточно передать этот токен facebookAuthentication для каждого вызова API REST, чтобы заставить сервер получить правильный связанный пользователь facebook?
- Я использую HTTPS, поэтому, я думаю, соединение достаточно зашифровано, верно?
- Я предполагаю, что мне нужен механизм подписи, поэтому подписывайте каждый вызов API REST (через HTTPS), чтобы гарантировать, что токен facebookAuthentication отправлен только из моего мобильного приложения. Я бы сделал это, используя RSA с SHA-1, чтобы подписать любой вызов API REST. Но проблема с этим подходом заключается в том, что клиент должен хранить закрытый ключ где-то в приложении (для подписи запросов), а сервер знает открытый ключ (для подписи подписи). Это верно? Если да, я думаю, что это большая проблема с безопасностью, поскольку мобильное приложение (особенно android) можно декомпилировать, чтобы получить закрытый ключ. Как безопасно хранить этот секретный ключ в своем приложении? Есть ли другая система для подписи, которую вы можете порекомендовать?
Bt: Знаете ли вы хорошую RSA-библиотеку для iOS и Android?