Google App Engine上的身份验证(网页)

STe*_*TeN 8 authentication google-app-engine servlets httpsession google-openid

我想要求用户在访问我的GAE(Google App Engine)应用程序的某些部分时使用登录名/密码.我想限制对预定义用户集的访问,例如在页面上,可以将新数据上载到数据存储区.

我发现有在GAE 3种方式如何可以解决的,但它看起来像只有最后一个(最复杂),可能是我的问题的解决方案:

  1. 使用部署描述符(<security-constraint>在web.xml中).这并不好,因为这些用户可以访问,即使是GAE应用程序管理页面的查看者,他们也可以看到帐单历史记录,浏览数据存储区,日志等等,这是我必须避免的.

  2. 使用联合登录(Open ID)(https://developers.google.com/appengine/articles/openid)并允许用户使用他们的Google,Yahoo!或其他登录身份.它不是一个解决方案,因为我想限制对一小组用户的访问(最多5个)并且不允许每个人使用该应用程序.

  3. 另一个选项是创建只能通过HTTPS访问的简单自定义登录页面,并让用户在POST请求中发送用户名和密码(它可以很简单,因为我们有安全的https连接)到servlet,在servlet上生成一些会话标识符具有指定的有效性并使其成为每个后续请求的一部分.如果会话标识符存在且同时未手动过期,则还需要在用户每次发送GET或POST请求时进行检查.

关于如何维护管理员帐户的任何其他/更好的建议?可以HttpSession帮助最后一个变种?

亲切的问候,STeN

mja*_*ard 1

我使用 2 和 3 的组合。我允许所有用户登录,但随后我限制对特定电子邮件地址的操作。这些可以是硬编码的,或者(更好)在数据存储和内存缓存中(这样您就不必在每个请求上查询数据存储)。如果您愿意,您还可以将此数据缓存在 Java 中的静态变量中 - 只是要注意,如果您更改有权访问的用户,您可能需要手动终止实例。如果像我一样,您很少/从不更改访问权限,那么这应该不是问题。

允许所有用户登录实际上使他们无法访问我的应用程序 - 他们看到管理页面,但除了一条消息“您无权访问任何这些管理选项”之外,它们是空的。