← 返回所有博客文章

网络应用中,典型的部署场景就是有多个用户,每个用户都有自己独立的数据集,可独立访问自己权限内的报表数据,ActiveReports Server提供多点登录功能或单点登录,您可以自定义安全提供程序,也可以使用活动目录及非活动目录(LDAP)。

本文主要描述了如何使用Server实现多点登录,默认情况下,ActiveReports Server 有内置的安全提供程序认证内部已创建的用户账户。而使用自定义安全提供程序,不需要为每一个用户在Server中创建用户实例,只需要创建角色,并为角色分配权限,就可实现用户多点登录,并只查看自己权限内的数据。

ActiveReports实现多点登录的方法是十分灵活的,且能够兼容多种部署场景,实现多点登录的关键在于创建实现SDK中ISecurityProvider接口的自定义安全提供程序,使用安全过滤器过滤实体数据,并在管理员面板中配置。

安全提供程序作为ActiveReports Server的用户登录认证授权机制,实现安全提供程序的关键点:

1. 验证用户,即谁正在登录ActiveReports Server。

2. 返回用户详细信息,根据已登录的用户,返回角色信息和其他需要查询数据库的信息。

本文主要内容:

  • 自定义安全提供程序
  • 配置安全提供程序
  • 为模型实体添加安全过滤器
  • 总结

    1. 自定义安全提供程序

    1) 创建.Net 4.5 类库,实现扩展接口。

    在Visual Studio中,新建C#.NetFramework 4.5类库项目(NetFramework 4.0及其更新版本都可以)

    L_8D3C.tmp

    2) 在AR Server安装文件夹中,将ActiveReports.Server.Extensibility.dll文件复制到新建项目的bin文件夹中。在Visual Studio中解决方案资源管理器,右键单击“引用”,将ActiveReports.Server.Extensibility.dll添加至引用。

    clip_image004

    3) 创建两个新类,分别实现ISecurityProvider和 ISecurityProviderFactory接口并实现接口方法。

    实现ISecurityProviderFactory接口主要代码,主要实现了GetSupportedSettings用于初始化管理员面板,Create()方法主要为自定义认证创建自定义对象。

    ISecurityProvider包含的主要方法:

    CreateToken 创建用户安全令牌。

    FilterRoles 获取AR Server的角色集合,判断当前用户角色,控制用户访问权限。

    GetUserContext,使用特定令牌,返回UserContext对象。

    GetUserDescription,返回用户邮件和用户名称。

    4) 编译运行动态库,将生成的文件.dll复制到C:\ActiveReports 9 Server\SecurityProviders路径下,自定义安全提供器定义完成。

    2. 配置自定义安全提供程序

    进入管理员控制面板,选择“安全提供程序”,在自定义安全提供程序下拉列表中就可查看到已定义的安全提供程序,选择自定义的提供程序,该面板是由实现ISecurityProviderFactory的类初始化的,因此“安全提供程序设置”的内容,都可自定义。配置完成后点“应用”保存设置,可在测试提供程序中输入用户名及密码,测试是否配置成功。

    image

    3. 添加行级安全过滤器

    添加自定义提供程序后,我们可使用安全过滤器过滤实体中的数据,真正实现根据角色权限,用户查看自身相关的数据,保证数据的安全性。

    在管理员控制面板中,选择相关模型,执行编辑操作,在模型实体列表中选择需要添加过滤器的实体;在左侧面板“Security Filter”项中点击添加按钮,在编辑安全过滤器对话框中设置,选择匹配的UserContext属性值及实体属性值。

    点击“应用”保存设置,则安全提供程序设置成功。

    clip_image008

    4. 总结

    您可以配置ActiveReports Server适用于任何多点登录的环境。ActiveReports Server是非常灵活的,只需一次部署ActiveReports Server就可以处理多租户的报表需求。允许多用户使用相同的数据模型,减少了应用系统升级的维护成本。同样的,来自不同租户的用户也可以使用相同报表查看自身相关的信息。ActiveReports Server为您提供强大的报表管理功能。

    以上就是创建自定义提供程序实现多点登录。

    您在使用产品过程中有任何疑问,可以登录官方产品技术社区和经验丰富的技术工程师、ActiveReports开发人员交流:了解更多