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

kon*_*ung 8 ruby permissions ldap ruby-on-rails active-directory

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

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

这是一个例子:

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

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

谢谢!!!

Pat*_*ann 5

ActiveLDAP(Documentation,Github)具有您正在寻找的一些功能,特别是:

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