我们正在构建一个简单的Android应用程序以及一个简单的后端Web服务器,以允许用户从服务器获取一些信息。
我们需要登录用户,以确保他有权查看数据,但我不认为我们有特殊的安全问题。
我需要一些关于如何实现服务器以保持尽可能简单的建议。
例如,我们可以使用类似的东西来确保用户有权查看数据:
http://ourwebservice/user/password/viewsuchandsuchdata
这是一种很好的做事方式吗?
您有任何建议或意见吗?
答案 0 :(得分:1)
有许多方法可以保护网络服务。
最简单的可能是“基本身份验证”(http://en.wikipedia.org/wiki/Basic_access_authentication)。在每个请求中,您将在“Authorization”HTTP标头中以“:”连接并以base 64编码方式发送用户凭据。为了确保安全,您需要确保与Web服务器的连接使用SSL(HTTPS),否则可能会拦截用户密码。
另一个“更新”的解决方案是OAuth2,在您的情况下是“资源所有者凭据”流程。您可以使用它们一次“交换”它们以获取服务器发出的短期访问令牌,而不是在每个请求上传递用户凭据。然后,在对Web服务的任何请求中,您都会传递该访问令牌以代替身份验证。然后,服务器必须验证令牌是否有效,并找出它是由哪个用户发出的。有关详情,请参阅此文:http://aaronparecki.com/articles/2012/07/29/1/oauth2-simplified。
可能有更多“自定义”方式进行身份验证......
使用OAuth2流程可能更困难,但是有很多开源库可以帮助您构建OAuth2提供程序(http://oauth.net/2/)。优点是您不必在设备上存储用户密码,这样更安全(密码越少越好)。