使用网络服务的Android APP如何对用户进行身份验证

标签 android web-services security authentication

我正在开发一个 Android 应用程序,它使用我也将开发的网络服务(我正在考虑使用 RESTFul 网络服务)。 我想保护应用程序和服务器之间的连接,但我也需要对用户进行身份验证..

我的问题在最后一部分,为了保护连接,我认为最好的方法是使用 SSL (https),​​我错了吗?

我不知道验证用户身份的“最佳方式”是什么,以确保一个用户不能像另一个用户一样使用网络服务。 我有一些想法,比如在返回 token 的 web 服务上使用 authenticate(login,pass) 方法。对于任何需要身份验证的操作,用户都需要将该 token 作为参数传递。事情是这样的这样做的好方法?在这种情况下,用于对用户进行身份验证的最常用技术是什么?

如果基于 token 的身份验证是个好主意,我应该如何生成 token ?

抱歉这么长的文字..

任何帮助都是有用的

谢谢

最佳答案

在您走这条路之前,请确保您了解像 OAuth 这样的流行标准。大多数 OAuth 流程都以用户通过 Web 浏览器登录到您的服务器为中心。这可能会导致移动应用程序的用户体验非常糟糕。该标准确实允许替代方案。这是 a decent introduction .

您还可以使用现有的身份提供商,如 Google、Facebook、Twitter 等,而不是实现您自己的 authN/authZ。在 Android 上,您可以使用 AccountManager 请求 Google 身份验证 token 。 .这通常有效,因为用户需要登录到他们的 Google 帐户才能访问 Android Market。无论如何,这将提示用户向您的应用授予授权。然后,您可以使用 Google 身份验证 token 让您的用户使用您自己的 token 登录到您的服务。登录本质上是您的服务器验证 Google token 是否有效(通过联系 Google 的服务器),然后发布自己的 token 以用于调用您的网络服务。如果你不喜欢谷歌,你可以使用 Facebook SDK

至于 token 使用什么……OAuth 规范也有相关内容。您可以做一些像随机字符串一样简单的事情,也可以做一些像加密的 SAML assertions 这样复杂的事情。 .

关于使用网络服务的Android APP如何对用户进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7086746/

相关文章:

android - 安装APK时出错

android - com.github.PhilJay :MPAndroidChart library 的问题

java - 试图制作一个自动完成程序,但它不起作用

c# - 从文件加载证书文件

android - 在 android 中使用 Web 服务和 Ksoap2 获取图像

javascript - 哪些浏览器允许 javascript 作为图像标签的来源?

android - 如何以编程方式锁定/解锁屏幕?

.net - 帮助理解 Web 服务和 REST

iphone - 应用程序包保护 - 签名包*可能*被修改

security - 如何在 RESTful 应用程序中防止 CSRF?