【问题标题】:How to handle permissions in GAE application如何在 GAE 应用程序中处理权限
【发布时间】:2014-01-21 13:54:04
【问题描述】:

我正在 JSP 中开发一个关于 GAE 的应用程序。我们有一个使用 Google Apps for Business 的私有域,这意味着该应用程序仅供我组织的成员使用。但是,我想限制该权限,以便只有某些用户可以访问该应用程序。更好的是我想创造角色。不幸的是,从域管理页面我无法为 GAE 应用程序定义权限。有什么我想念的吗?我必须手动处理它们吗?如果是这样,怎么做?我唯一想到的是一个电子表格,我在其中保存了权限,但这不是那么聪明……谢谢。

【问题讨论】:

    标签: google-app-engine


    【解决方案1】:

    我需要一个封闭的业务应用程序并编写自定义代码。 Java 设计中每个安全对象都有一个Access Control List。每个 ACL 都保存为单个字符串,以减少 Datastore 开销并按需重建。资源访问受到如下保护:

    if (resource.permissions.granted(user, operation) {
        // do the operation
    } else {
        // send an informative 'access denied' response
    }
    

    【讨论】:

    • 所以您会建议使用 DataStore 而不是电子表格?
    • 是的,原因如下。 AppEngine 直接在 Datastore 之上运行,因此访问效率很高。它的 API 很简单,而且它的可扩展性很大。它的无模式结构(或应用程序定义的模式,如果你实现的话)比电子表格的刚性(工作表、行、列)结构更灵活。
    • 很好,你是对的,实际上很容易。我能够在半小时内实现它(至少对于一个页面)。谢谢。
    【解决方案2】:

    我建议使用 Google 网上论坛来定义应用角色。一旦您对用户进行了身份验证,您就可以读取他们的组成员身份,以确定应该为您的应用分配哪些角色。

    【讨论】:

    • 是否有任何方法可以通过 UserService 类检索用户成员资格,还是必须通过 Google Groups API?
    【解决方案3】:

    简短的回答是您必须手动处理角色和内容。

    从 Google App Engine 的角度来看,可以通过更改 Application Settings 中的 Authentication Type 来将您的应用程序限制为仅限 Google Apps 域中的用户使用,但仅供参考,您将无法将其更改回来。

    还有一种方法可以将某些 URL 限制为仅限应用的管理员使用,并且管理员是仪表板中 权限 页面中列表中的管理员。

    我从未使用 Java 做过,但您可以在 Deployment Descriptor 中了解更多信息。

    话虽如此,您可以实现的目标非常有限,如果您希望每个登录用户拥有更多角色或执行更多特定任务,则必须自己实现这些事情。跟踪登录的用户并在应用程序内为他们分配角色,并根据谁登录允许或不执行任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-13
      • 1970-01-01
      • 2021-11-05
      • 2011-06-24
      • 1970-01-01
      • 1970-01-01
      • 2016-10-11
      • 2017-06-19
      相关资源
      最近更新 更多