使用安全约束时,防止 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 的服务 + 身份验证