Google登录并登录用户

时间:2015-04-15 06:16:01

标签: javascript google-plus google-authentication google-login

我有一个应用程序,我想让人们使用谷歌登录登录。我需要检查服务器当前登录用户的权限是什么。 (我有一个电子邮件/角色表)

我在这里阅读文档: https://developers.google.com/identity/sign-in/web/sign-in 根据我的理解,当用户使用谷歌登录时,我得到一个回调,我可以使用该电子邮件并使用它来拨打我的服务器。

但我不明白的是如何确保恶意用户不会看到javascript代码并使用他想要的任何电子邮件向我的服务器发出请求?

换句话说,如果整个登录是在javascript中,如何验证服务器中的身份?

1 个答案:

答案 0 :(得分:0)

假设您正在执行以下操作:

  • 从网上登录
  • 使用JavaScript进行登录和所有数据访问

以下措施可防止恶意3P使用您的凭据/其他用户凭据进行API调用:

  • API调用受域限制为您在开发人员控制台中配置的授权来源
  • API调用仅限于当前凭据(例如,只能获取当前用户详细信息/只能获取当前用户的凭据和令牌)

那就是说,让我们继续进行身份验证:确保用户是他们声称的用户。在登录回调中,您将收到一个特殊令牌,ID令牌,其中包含:

  • 令牌的受众(您的客户ID)
  • 令牌的发行者(来自个人资料的用户ID)
  • 已发布的时间戳
  • 到期时间戳
  • 等。

这些值用于防止伪造并避免confused deputy problem。例如,您使用这些值来检查用户是谁,对象的颁发者是您,以及令牌尚未过期的声明。您还可以查看ID令牌签名,并使用JWT功能或将其传递给Google验证令牌端点对其进行验证。

使用ID令牌验证用户后,您可以设置用于建立会话的cookie,并避免在每次API调用时验证用户。

Google提供令牌验证样本here,例如Google+ Token Verification sample in Ruby。此外,the Google+ quickstart samples演示了在" / connect"中建立客户端 - 服务器会话。服务器端语言(Ruby,Python,.NET等)上的服务器端点。

Identity Cookbook

提供了有关该主题的其他讨论