我有一个应用程序,我想让人们使用谷歌登录登录。我需要检查服务器当前登录用户的权限是什么。 (我有一个电子邮件/角色表)
我在这里阅读文档: https://developers.google.com/identity/sign-in/web/sign-in 根据我的理解,当用户使用谷歌登录时,我得到一个回调,我可以使用该电子邮件并使用它来拨打我的服务器。
但我不明白的是如何确保恶意用户不会看到javascript代码并使用他想要的任何电子邮件向我的服务器发出请求?
换句话说,如果整个登录是在javascript中,如何验证服务器中的身份?
答案 0 :(得分:0)
假设您正在执行以下操作:
以下措施可防止恶意3P使用您的凭据/其他用户凭据进行API调用:
那就是说,让我们继续进行身份验证:确保用户是他们声称的用户。在登录回调中,您将收到一个特殊令牌,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等)上的服务器端点。
提供了有关该主题的其他讨论