通过Android应用安全地将Google Plus登录到Web应用程序中

时间:2013-07-11 21:06:05

标签: android google-plus

我正在开发Android应用,我希望用户使用Google+登录登录我的应用。

目前,我在PHP登录脚本中传递了我从Google+获得的用户名。该脚本使用用户的ID加载新会话。

目前,该网站非常不安全:知道其他用户的用户名的任何人都可能以其身份登录。

有什么安全的方法可以做到这一点?

如何针对我的服务器授权用户?

对我而言,Google +纯粹是一种社交网络API ...

2 个答案:

答案 0 :(得分:18)

Google+登录使用OAuth 2.0 - 这意味着用户不会直接对您的服务器进行身份验证。相反,他们会与Google进行身份验证,并获取由Google签名的令牌。您的应用获取该令牌(来自Android上的Google Play服务),并可将其传递给您的服务器,作为用户通过Google验证的证明。然后,您可以将用户Google+ ID与您自己服务器上的新用户ID或现有用户ID相关联。因此,只要用户能够证明他们通过Google对特定的Google+用户ID进行了身份验证,您就可以将其视为在自己的服务器上进行身份验证。

要实施,您可以选择一些选项,具体取决于您的系统架构:

  1. 当您只想向自己的服务器验证用户身份时:在Android设备上,您的用户通常已经过Google验证,因为他们在客户经理中拥有Google帐户。您的应用可以利用此功能,并在帐户管理器中为用户获取令牌,而无需键入任何密码。用户点击应用中的“使用Google登录”后,您可以使用GoogleAuthUtils.getToken()为其获取ID令牌并将其传递给您的服务器。验证Google签名后,您的服务器可以安全地将用户会话与相应的用户帐户和权限相关联(即将会话视为已通过身份验证)。 Tim Bray hereIan Barber here讨论了获取令牌并验证令牌的过程。
  2. 如果您要向自己的服务器验证用户身份并通过服务器发出Google+ API调用:那么您应该查看developers.google.com上的server side flow文档。这采用与选项一相同的方法,但此外,当用户第一次登录时,Android应用程序请求授权代码而不是ID令牌。这可以由服务器交换访问令牌和刷新令牌 - 服务器可以使用它来代表用户进行API调用,例如,使用PHP client library
  3. 如果您要向自己的服务器验证用户身份,还要通过Android设备进行Google API调用:那么您应该通过Google Play服务提供use the PlusClient来制作Google API除了您使用自己的服务器对用户进行身份验证所采取的步骤之外,还要进行调用。
  4. 您可能希望在客户端或服务器上进行Google API调用,以便您可以使用用户Google+个人资料中的数据预先填充注册表单。

答案 1 :(得分:0)

Google Plus使用OAuth 2.0 https://developers.google.com/+/api/oauth

它有身份验证令牌。您可以使用身份验证令牌从Android或服务器访问Google Plus。 在服务器上,您可以通过使用该令牌访问Google来验证令牌。