使用安全约束时,防止 Google App Engine 记住非管理员用户的会话

Posted

技术标签:

【中文标题】使用安全约束时,防止 Google App Engine 记住非管理员用户的会话【英文标题】:Prevent Google App Engine from remembering session of non-admin user when using security-constraint 【发布时间】:2011-12-07 07:24:58 【问题描述】:

我正在浏览 this article,但遇到了一个问题。想象一下,我在 web.xml 中有以下规则:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Admin access</web-resource-name>
        <url-pattern>/AdminPanel.jsp</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>
</security-constraint>

然后非管理员用户打开 AdminPanel.jsp,GAE 将他重定向到 Google 帐户登录页面,他输入他的凭据并从逻辑上获取此页面

Error: Forbidden
Your client does not have permission to get URL /AdminPanel.jsp from this server. 

现在我无法使用另一个 Google 帐户重新登录,因为我仍然以错误用户身份进行身份验证并且 GAE 将 ACSID cookie 用于应用网址。我总是会收到上面提到的错误消息。有没有办法优雅地解决这个问题?我希望客户能够使用适当的凭据重新登录。客户登录多个帐户的情况也是可能的。我个人有 Google Apps 帐户和 Gmail 帐户。所有 Google 应用程序(例如 GMail)都有在帐户之间切换的选项。我可以这样做吗?

【问题讨论】:

【参考方案1】:

在应用的 servlet 中检查用户的凭据,而不是使用 web.xml。如果他们已登录但未获得授权,请为他们提供退出的机会。

【讨论】:

以上是关于使用安全约束时,防止 Google App Engine 记住非管理员用户的会话的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 的 Google App-Engine 中使用 RPC 代理类多次写入(实体)

映射到安全站点的 Google App Engine 自定义域

是否可以防止 Google App Engine 上的 DoSing?

Google App Engine + 基于 JSON 的服务 + 身份验证

将视图用作 inputAccessoryView 时如何防止键盘添加自己的高度约束

APP账号密码传输安全分析