使用Google+Facebook登录的Android应用程序的Spring Boot REST API安全性

9
我正在构建一个包含2层的应用程序:-
1. 本地Android应用程序 - 包含通过Facebook + Google登录以使注册更加简单的功能。
2. 使用Spring Boot的Java服务器 - 典型的MVC端点,如REST API和UI管理屏幕。
Facebook(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/signin REST端点(即哪些标头等可发送到一个没有安全性的端点,因为未注册的用户将会访问此端点)。此外,在users数据库表中保存哪些字段是可以的?

  2. Android应用程序如何调用API以向已注册用户提供报价,例如/api/offers/?即,应该传递哪些令牌等?

  3. Spring Security保护这些端点的最佳实践方法。

假设OAuth 2是正确的选择,但任何建议/指针都将不胜感激。

1个回答

3

答案1:在登录时,应用程序将向服务器发送用户信息,服务器将生成令牌,并将此令牌返回给应用程序,应用程序可以保存此令牌,它可以随时更改。你可以使用任何HTTP库来进行网络服务,如Volley,Retrofit等。

需要在数据库中存储的字段: userId、userName、userToken。

答案2:/api/offers/,你可以在数据库中检查用户的userId是否存在,如果存在,则在web服务响应中抛出已存在的消息。

答案3:为你的Web服务使用SSL实现会更加安全,并且正如你所提到的,你将为每个用户使用令牌,因此它只能被身份验证的用户访问。

注意:该令牌应在30分钟或您想要的任何时间内更改,这将使您的身份验证功能更加安全。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接