受欢迎的应用程序如何从移动应用程序向其服务器validation用户请求?
说我有一个Android应用程序,连接到一个.net api接收/设置数据。 我的困惑是关于如何首次注册/login用户,并在每次向api发出请求时进行身份validation。
- 如果我只使用基于用户名/密码的身份validation将不够安全?
- 而我不能保存该用户名/密码在设备当然是安全的原因?
- 我应该在注册时为每个用户颁发一个GUID,把它保存在他们的设备中,并在api请求期间每次检索?
还有哪些其他模式可用,哪些是最有效和最安全的,我只需要一个stream程就可以了。 有人可以告诉我什么方法着名的Android应用程序喜欢Facebook
, foursquare
, twitter
使用来validation从他们的移动应用程序到他们的服务器的每个请求?
对不起,如果这不是一些公共信息。
我想他们使用基于“令牌”的安全系统,所以密码实际上从来没有存储在任何地方,只是第一次进行身份validation。 所以应用程序最初发布用户名/密码(通过ssl),服务器返回应用程序存储的令牌。 对于随后的同步尝试,首先发送令牌,服务器检查它是否有效,然后允许发布其他数据。
令牌应该有一个到期,以便服务器可以重新请求authentication尝试。
如果您从Android Framework内部挂入同步适配器,则可以让您同步和validation所有内容。
http://developer.android.com/training/sync-adapters/creating-sync-adapter.html
如果您查看设备下的设置,您将看到我的意思。
基本上这些着名的使用OAuth协议(1)/框架(2)。 尽pipe它必须是一个标准,但是每个标准都有不同的协议/框架实现。 所以我们在整合时要非常小心。
例如:Dropbox仍然使用OAuth 1,最近提出了OAuth 2的支持。
回到答案,正如peterpan所说,它是一种基于令牌的身份validation方式,是一次性的,而且超出了这个等式。这些令牌已经过期,或者在某些情况下给予开发者权力。
有趣的是,资源访问范围可以被定义,而不是允许客户端应用程序保留用户名,密码是危险的。
这是如何工作的基本说明。
我会得到更多的细节后,我会更新答案,因为我在这方面在这方面的工作:)
我是新手,但我会尝试给出给定问题的合理解决scheme。
将有两个选项,[1]对于每个URI,将执行httpvalidation,用户input的凭证将被validation,用户将访问资源。
[2]另一种方法可能是,用户必须进行身份validation,并且在每次身份validation时都会生成唯一的令牌。 使用生成的令牌,用户将访问资源。
虽然我不确定哪种方法最适合移动应用程序。
我正在寻找完全相同的东西,发现谷歌的方式,像peterpan说,但通过谷歌的API。 尝试这个链接和谷歌通过它的方式,我也开始! 我将在发布新信息的同时向其发送信息!
身份validation示例是一个很好的开始。 Android会在帐户pipe理器中存储凭证,您可以在Android的设置中查看帐户。 这将自动存储令牌,提示用户如果过期或丢失的凭据,刷新令牌等。我发现这个例子的http部分缺乏或旧的。 扩展android的AccountAuthenticatorActivity是parsing序列化数据到布局并返回到互联网的好帮手。
放置在SharedPreferences中时,用户名和密码可以是安全的。 使用https连接到服务器也应该足够好。