我正在开发依赖于 Google 的 sign in javascript library 的 SPA对用户进行身份验证。一位用户提交了一份错误报告,称当她在共享计算机上演示我们的产品时,该应用泄露了她的 Google 电子邮件帐户。
我注意到其他网站也有同样的症状,所以我的示例案例将使用 medium.com。
重现:
- 访问本地图书馆的公共(public)计算机。
- 打开 Chrome
- 浏览到 mail.google.com,发现没有用户登录。
- 转到 medium.com 并使用 Google 帐户登录。
- 退出 medium.com
- 这是登录和注销对称结束的地方。您应该此时可以离开。
- 再次访问 mail.google.com。看到您已自动登录。
似乎通过第 3 方网站进行身份验证也会登录到 Google 的生态系统,然后在退出第 3 方网站后该帐户仍保持事件状态。
是否有一种通过 Google 帐户对用户进行身份验证的方法不包含此副作用?
最佳答案
用户正在登录 Google 和网站
当用户使用 OAuth(通过 Google)时,它会将他们重定向到 Google 的 OAuth 页面,其中包含一些数据......
Hey Google, this person called Foo Bar is claiming to be foobar@gmail.com. Is that right?
然后,如果您已登录,Google 将回复"is"或使用...
Hold on a sec mate, they're not logged in -- I'll give them a login screen to check for you
用户随后将登录到 Google 而不是您的网站。如果登录成功,Google 会将用户重定向回您的网站,并提供相关信息(例如姓名、出生日期、电子邮件等)。
All done now mate! Foo Bar IS foobar@gmail.com! Here are his details: [insert user info here]
用户现在已登录到 Google 和您的应用。
当用户退出您的应用时,他们会保持登录状态并登录 Google,这会产生您所说的结果。有一些方法可以自动退出 Google(在下面的链接中有详细说明),但我绝对不会推荐它们,因为用户可能会在另一个选项卡中打开 Gmail,而您很可能会破坏他们的工作流程。你甚至可能会让他们担心。 (如果我无缘无故退出 Google,我会的!)
关于javascript - Google 登录 API 不对称 - 泄露用户帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52019702/