【问题标题】:Examples using Active Directory/LDAP groups for permissions \ roles in Rails App在 Rails 应用程序中使用 Active Directory/LDAP 组获取权限\角色的示例
【发布时间】:2010-03-13 20:26:05
【问题描述】:

我想知道其他人是如何实现这个场景的。我有一个内部 Rails 应用程序(库存管理、标签打印、运输等)。我正在重写系统上的安全性,导致旧方法维护起来很麻烦(用户表、密码、角色)——我使用了 restful_authentication 和角色。它是在大约 3 年前实施的。我已经使用 ruby​​-ldap-net 实现了 AuthLogic 来对用户进行身份验证(实际上这非常容易,与我之前在其他框架/语言上的挣扎相比)。下一步是角色。我已经在 Active Directory 中定义了组 - 所以我不想在我的 rails 应用程序中运行单独的角色系统,我只想重用 Active Directory 组 - 因为系统的该部分已经为其他目的而维护(共享驱动器、备份、PC 访问等)

所以我想知道其他人是否有在基于 Active Directory 或 LDAP 中的组的 Rails 应用程序中实现权限/角色的经验。此外,角色要求也相当复杂。

这是一个例子:

例如,我的用户属于 AD 中的主管组和库存部门,所以我是那个能够在库存中运行“高级”任务的用户 - 调整数量,运行报告,但是其他“主管”来自其他部门不应该这样做,高层管理人员也应该能够使用这些报告(无论天气它们是否属于库存),但不能使用中层管理人员,除非它们在库存组中。系统管理员(域管理员)应该可以不受限制地访问系统,除了人力资源和财务部分,除非他们在人力资源部门(比如你不希望所有系统管理员(除了一个授权的管理员)看到其他人的个人信息员工)。

我看了acl9,cancan,aegis。我想知道在这种基于 AD 的系统访问的特殊用途中,使用一种与另一种相比是否有任何优点/缺点。如果您有很好的经验,请推荐其他系统。

谢谢!!!

【问题讨论】:

    标签: ruby-on-rails ruby active-directory permissions ldap


    【解决方案1】:

    ActiveLDAP(Documentation、Github)具有您正在寻找的一些功能,具体来说:

    • 您可以将 LDAP 对象(对象类实例)映射到 Rails 应用程序中的对象。 API 并不完全反映 ActiveRecord,但它很容易理解和学习。
    • 显然不可能跨 LDAP 和关系数据库进行连接等操作,但您可以编写一些稍微聪明的代码,使复合数据易于从 ActiveLDAP 对象或 ActiveRecord 对象访问。
    • ActiveLDAP 还提供了写入 LDAP 的方法,允许您从 Rails 管理 LDAP 中的用户和角色,无需管理数据库中的用户表,但是,用户数据库表可能仍然需要存储关于用户的应用特定数据。
    • 此外,您可以将 AuthLogic 与 ActiveLDAP 集成。这是我发现的一种尝试:LDAP Pass-through Authentication with Authlogic and ActiveLdap
    • 然后您可以使用声明式授权 (Pundit) 来处理您的角色和授权。

    【讨论】:

    • Patrick,感谢您的回复,但让我澄清一下我在寻找什么。正如我所提到的,我已经获得了身份验证部分 - 使用 authlogic 和 ruby​​-ldap-net 解决了。这是我感兴趣的授权部分,我使用了一堆 gem,例如 acl9 和声明式授权,我只是想看看是否有人做过类似的事情 - 使用任何授权 gem 将 AD / LDAP 组映射到角色 - 以及什么他们遇到的问题。
    • 尼克,我的回答是 ActiveLDAP 将允许您将角色和用户从 LDAP 映射到 Ruby 中的对象,并且您可以使用声明式授权来处理应用程序的实际授权部分基于每个用户的角色。如果不知道 LDAP 实例的结构或授权方案的细节,就很难深入了解架构。
    • 文档的第一个链接已损坏,但似乎就是这样,activeldap.github.io
    猜你喜欢
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 2018-11-17
    • 2011-07-26
    • 2017-02-06
    • 1970-01-01
    • 2012-04-14
    • 2019-06-19
    相关资源
    最近更新 更多