繁体   English   中英

Android 消费webservice的APP如何认证用户

[英]Android APP that consumes a webservice how to authenticate users

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

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

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

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

抱歉这么长的文字..

任何帮助都会很有用

谢谢

确保您了解 go 之前的流行标准,例如 OAuth。 大多数 OAuth 流程以用户通过 web 浏览器登录到您的服务器为中心。 这可能会导致移动应用程序的用户体验非常糟糕。 该标准确实允许替代方案。 这是一个体面的介绍

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

至于令牌的用途...... OAuth 规范也有相关内容。 您可以做一些简单的事情,比如随机字符串,也可以做一些复杂的事情,比如加密的SAML 断言

您应该实施基于令牌的 OAuth,这将要求用户登录一次,然后永久拥有访问权限。

您可以使用已经为您提供用户身份验证服务的Google App Engine (您的 Android 用户很可能已经拥有 google 帐户)但这只是众多选项之一。

您还可以查看亚马逊的身份访问管理 (IAM) ,它允许您管理有权访问您的 web 服务的用户,并相应地授权他们。

我认为最好的方法是使用 SSL (https),我错了吗?

这只能防止某些类型的恶意使用,但不能防止一切。 仍然没有什么可以阻止人们通过电话访问您的数据库,并以这种方式检索凭据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM