Spring boot REST api security для приложения Android с использованием входа в Google + Facebook
Я строю приложение с 2 слоями: -
1. Нативное приложение для Android - содержит возможность входа через Facebook + Google, чтобы сделать вход менее болезненным.
2. Java Server с использованием Spring Boot - типичные конечные точки MVC, такие как REST api + экраны администрирования пользовательского интерфейса.
Фейсбук (FacebookSdk
) и Google (GoogleApiClient
) части входа работают и тестируются с использованием следующих зависимостей Android: -
dependencies {
compile 'com.facebook.android:facebook-android-sdk:4.6.0'
compile 'com.google.android.gms:play-services-auth:9.0.0'
....
}
Мудрый API у нас есть: -
/api/signin
- вызывается, когда пользователь успешно входит в систему через Facebook + Google и создает запись вusers
таблица базы данных.
Существует также ряд других конечных точек API, например, предложения
/api/offers/<user_id>
- возвращает предложения уже зарегистрированному пользователю.
Я не уверен в наилучшей практике, в которой:
Как приложение для Android выполняет API-вызовы к /api/signin конечным точкам REST (т. Е. Какие заголовки и т. Д. Можно отправлять на то, что, как я полагаю, является конечной точкой без защиты, поскольку незарегистрированные пользователи будут задавать это). Кроме того, какие поля можно сохранить в
users
дб таблица?Как Android-приложение обращается к API, например, к /api/offer / уже зарегистрированным пользователям? то есть когда токены и т. д. должно пройти через приложение Android?
Наилучший способ обеспечения безопасности пружин для защиты этих конечных точек.
Предполагая, что OAuth 2 - это путь, но любые советы / указатели будут наиболее ценными.
1 ответ
Ответ: 1 / api / signin во время входа приложение отправит информацию о пользователе на сервер, и сервер сгенерирует токен, и этот токен вернется при входе, приложение может сохранить этот токен, время от времени его менять. Вы можете использовать любую http-библиотеку для веб-службы, например, залп, модернизацию и т. д.
поля, которые нужно хранить в db: userId, userName, userToken.
Ответ: 2 / api / offer / вы можете проверить userId пользователя в db, если он там существует, тогда вы выбросите сообщение msg, уже присутствующее в ответе веб-сервиса.
Ответ:3 Используйте реализацию SSL для вашего веб-сервиса, которая была бы намного более безопасной, и, как вы уже упоминали, вы собираетесь использовать токен для каждого пользователя, так как он будет доступен только для аутентифицируемого пользователя.
Примечание. - Токен должен меняться каждые 30 минут или в любое другое время, что сделает ваши функции аутентификации более безопасными.