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> - возвращает предложения уже зарегистрированному пользователю.

Я не уверен в наилучшей практике, в которой:

  1. Как приложение для Android выполняет API-вызовы к /api/signin конечным точкам REST (т. Е. Какие заголовки и т. Д. Можно отправлять на то, что, как я полагаю, является конечной точкой без защиты, поскольку незарегистрированные пользователи будут задавать это). Кроме того, какие поля можно сохранить в users дб таблица?

  2. Как Android-приложение обращается к API, например, к /api/offer / уже зарегистрированным пользователям? то есть когда токены и т. д. должно пройти через приложение Android?

  3. Наилучший способ обеспечения безопасности пружин для защиты этих конечных точек.

Предполагая, что OAuth 2 - это путь, но любые советы / указатели будут наиболее ценными.

1 ответ

Решение

Ответ: 1 / api / signin во время входа приложение отправит информацию о пользователе на сервер, и сервер сгенерирует токен, и этот токен вернется при входе, приложение может сохранить этот токен, время от времени его менять. Вы можете использовать любую http-библиотеку для веб-службы, например, залп, модернизацию и т. д.

поля, которые нужно хранить в db: userId, userName, userToken.

Ответ: 2 / api / offer / вы можете проверить userId пользователя в db, если он там существует, тогда вы выбросите сообщение msg, уже присутствующее в ответе веб-сервиса.

Ответ:3 Используйте реализацию SSL для вашего веб-сервиса, которая была бы намного более безопасной, и, как вы уже упоминали, вы собираетесь использовать токен для каждого пользователя, так как он будет доступен только для аутентифицируемого пользователя.

Примечание. - Токен должен меняться каждые 30 минут или в любое другое время, что сделает ваши функции аутентификации более безопасными.

Другие вопросы по тегам