Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android RESTAPI项目的用户身份验证方法_Android_Api_Rest_Oauth_Oauth 2.0 - Fatal编程技术网

Android RESTAPI项目的用户身份验证方法

Android RESTAPI项目的用户身份验证方法,android,api,rest,oauth,oauth-2.0,Android,Api,Rest,Oauth,Oauth 2.0,我的web服务器有一个RESTAPI。我需要将用户身份验证添加到我的应用程序中,我的思考过程如下: 从应用程序窗体获取用户的用户名和密码 加密密码并对用户名和密码进行Base64编码 通过HTTPS将数据发送到RESTAPI Web服务器验证凭据,返回错误或成功 这安全吗?我看到很多人提到OAuth2。这是怎么一回事?它比我的进程做得更好的是什么?OAuth2的一个非常基本的解释是,用户将登录到您的系统,在发送之前对用户名和密码进行加密,然后如果它得到验证,它将向用户发回令牌 此后,每当用户试图

我的web服务器有一个RESTAPI。我需要将用户身份验证添加到我的应用程序中,我的思考过程如下:

  • 从应用程序窗体获取用户的用户名和密码
  • 加密密码并对用户名和密码进行Base64编码
  • 通过HTTPS将数据发送到RESTAPI
  • Web服务器验证凭据,返回错误或成功

  • 这安全吗?我看到很多人提到OAuth2。这是怎么一回事?它比我的进程做得更好的是什么?

    OAuth2的一个非常基本的解释是,用户将登录到您的系统,在发送之前对用户名和密码进行加密,然后如果它得到验证,它将向用户发回令牌

    此后,每当用户试图联系web服务器时,它都会将此令牌与每个API调用一起发送。这就是它如何确保未经身份验证的用户无法访问您的web服务器的方法

    因此,基本上您当前的方法包括OAuth2标准的一部分,但不是最重要的部分(令牌)


    在您的情况下,如何阻止未经身份验证的人访问您的web服务器?如果项目规模较小,那么风险就没有那么大。。但对于大公司来说,这是一个真正的威胁,需要加以应对。

    您在用户密码中使用了“加密”一词而不是“散列”,这一事实表明您对此的了解相当有限。这几乎肯定会导致您在认证过程中的某个地方弄乱您的身份验证过程,并将用户的私人信息置于风险之中

    OAuth2非常重要的一点是,它可以与许多现有的第三方提供商(Google、Facebook、Twitter等)一起使用,而您只需付出很少的努力

    您不需要做任何事情来存储凭据,甚至不需要对用户进行身份验证。第三方负责所有这些,并简单地向客户端提供一个令牌(长随机字符串),然后将其传递给服务器。然后,您的服务器与第三方服务器对话,以确保令牌有效(并获取您需要的任何信息,如用户名、电子邮件地址或其他信息)

    如果可以的话,你真的应该考虑使用它。大公司在保护其身份验证方法方面投入了大量精力,而您通过使用它获得了所有这些

    最后一个优点是,用户不需要为另一个帐户创建和记住凭据


    Google提供了一些文档来测试它在实践中的工作方式。

    在为用户提供身份验证门户之前,您应该真正了解加密和哈希之间的区别。您可以使用许多不同的哈希算法。我过去曾亲自使用过BCrypt,对此我也有相关的看法。现在,您可以在几乎所有主要的高级语言中找到几乎所有流行算法的实现

    显然,如果您不想使用OAuth提供程序来完成所有这些工作,那么OAuth提供程序将为您处理所有的难题,例如安全地存储密码、保护数据库以及所有其他安全方面。有许多可靠的OAuth提供商,如谷歌、Facebook、雅虎等

    要记住的一件事是你的应用程序所在的环境。OAuth确实依赖于每次用户想要访问您的应用时,OAuth提供商的服务器都有一个可用的连接。因此,如果你在公司防火墙或类似防火墙后面,可能会阻止访问Facebook等网站,这可能是一个大问题

    我个人更喜欢API项目中基于令牌的身份验证。如果您不熟悉基于令牌的身份验证,可以阅读此链接

    一个概念背后的一般概念 基于令牌的认证系统 简单。允许用户输入他们的 用户名和密码,以便 获取一个令牌,允许他们 获取特定资源-无需 使用他们的用户名和密码。 一旦获得了他们的代币, 用户可以提供令牌-这是什么 提供对特定资源的访问 在一段时间内-到远程 地点


    我很困惑。您不是为了访问Google的API而链接到的文档吗?@user5434408所有OAuth2提供程序都有某种API,因此您可以检索有关用户的信息,以及访问其他服务(如果您愿意的话)——您可以调用的可用API基于您希望用户进行身份验证时指定的称为范围的值。也许你可以阅读一个更好的链接,该页面更多地关注身份验证,而不是授权。因此,为了澄清这一点,谷歌的OAuth2允许已经在谷歌上创建帐户的用户通过他们的谷歌帐户访问我的应用程序(而不是在我的应用程序上创建自定义帐户)?@user5434408 Yep,OAuth2提供者就是这样工作的。您可以选择支持哪个OAuth2提供程序,并且用户可以通过该提供程序对其现有帐户进行身份验证。