我有一个网站,其中包含某些需要对最终用户隐藏的菜单项。
该网站在前端使用 PHP,在后端使用 Java 和 Spring,部署在虚拟机基础架构中的 Linux 操作系统上,尽管完整的技术堆栈尚未完全理解,因为它是一个遗留系统并且没有完整的文档记录。
我需要基于访问控制来保护站点和功能 - 用户映射到组和组,这些组可以访问不同的菜单项(功能)。我还必须为管理员提供一个界面来更改功能到组的映射。我还需要对不同读/写方法访问的级别进行精细控制。
我知道我需要 ACL。这种要求的最佳实践设计是什么?
选项和问题:
- DB - 负面问题将是:旧风格和创建我自己的身份管理功能,具有所有缺点和复杂性。
- LDAP - 负面问题:同样是我自己的身份管理系统,但可能比 DB 更简单,但我不确定功能级别映射到组的工作原理。LDAP 提供商是否提供组到特定功能的映射(即给定菜单项“帐户”-我只希望财务能够看到帐户菜单)
- OpenAM 和类似的将身份管理外部化的解决方案——这行得通吗?我一直在阅读这方面的内容——我了解身份验证,但我不了解细粒度级别的授权。看起来您需要一个配置为数据源的 LDAP 产品,那么 OpenAM 提供了什么而不是上面的选项 2,因为它是相同的?使用 OpenAM,它看起来像我配置了一个身份服务,但我在容器级别得到了保护——所以 Web 服务器和应用服务器,但它提供了自己的登录页面。我认为可以将其配置为访问样式表,以便与当前登录页面集成——但有没有人在任何这些类型的产品上这样做以确保它是可能的?另外,这是我的 ACL 要求吗?这是最好的设计吗?与 LDAP 和应用程序配置相比,它的设置要复杂多少?
进一步的问题:
- 最好建议使用 LDAP 解决方案吗?
- 您对 Apache LDAP 的开源产品有什么建议吗?有什么好的/容易管理的吗?是否有任何接口可以将功能操作到组?- LDAP 是否允许将函数/方法的细粒度级别映射到组,还是在应用程序中完成?这部分尤其令人困惑。如果有人能提供一个很好的资源,那就太好了。