在Rails App中使用Active Directory / LDAP组作为权限\角色的示例

时间:2010-03-13 20:26:06

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

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

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

以下是一个例子:

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

我看着acl9,cancan,aegis。我想知道在基于AD的系统访问的这种特定使用中是否存在使用一个与另一个的优点/缺点。如果你有良好的经验,建议其他系统。

谢谢!!!

1 个答案:

答案 0 :(得分:5)

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

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