退出Google帐户后,仍然会登录Google App Engine

时间:2013-06-03 16:40:59

标签: google-app-engine authentication google-account

我有一个Google App Engine Java应用程序,它嵌入在谷歌站点中(通过小工具)。该应用专为Google Apps客户而构建,因此需要对该客户的域进行Google身份验证 - 就像它嵌入的网站一样。

一般情况下,此应用只能在网站内使用。用户永远不必显式登录应用程序 - 它从父框架继承其登录会话(假设第三方cookie未在浏览器中被阻止)。

我们使用标准UserService模式,根据文档:

UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();

if (user != null) {
    // do ALL the things!
} else {
    resp.sendRedirect(userService.createLoginURL(req.getRequestURI()); 
}

登录用户获取SACSID域的myapp.appspot.com Cookie集,ACSID Cookie的HTTPS版本。

当用户退出包含的网站时,通过点击其Google帐户中的标准“注销”按钮,用户现已退出其Google帐户,但他们仍然可以访问该应用程序。 userService.isUserLoggedIn()也会返回true。

(我们不能让用户使用App Engine注销URL注销,因为一般来说,他们甚至不知道他们正在使用App Engine应用程序 - 它只是嵌入在网站上的内容。)

如果您通过直接浏览servlet而不是网站来重现此操作,然后在用户注销后大约2-3分钟退出Google帐户,UserService会检测到此情况并将用户重定向到登录状态屏幕按预期。但是,在人们可能会注销父站点然后在短时间内再次登录的情况下,有些情况下人们在应用程序中获得了错误的权限级别。

我们如何立即发现并做出适当的反应?

0 个答案:

没有答案
相关问题