Acumatica报告创作和单点登录

时间:2018-05-29 18:14:55

标签: oauth-2.0 acumatica

我们的用户使用基于OAuth2的SSO向Google Acumatica进行身份验证,并将Google作为身份提供商。他们没有访问系统的密码(我们会生成非常长的强密码,一旦设置了SSO就会丢弃这些密码)。

我不想深入了解SSO对我们很重要的所有原因。这很关键,我会留下它。 SSO是我们选择Acumatica的政策和业务要求。

报表设计器似乎不支持OAuth2。

我们是否有办法让用户能够通过浏览器下载RPX文件,在浏览器外编辑它们,然后仅使用SSO凭证通过浏览器上传更改?

另外,我在哪里可以获得报表设计器的源代码?我很想知道自己是否可以添加OAuth2支持。

1 个答案:

答案 0 :(得分:0)

Acumatica有两种类型的报告:

  1. Standard Reports
  2. Analytical Reports
  3. 上述链接介绍了如何使用Acumatica Cloud ERP自定义这些报告。

    您可以注意到,标准报告使用Cloud ERP具有以下有限的自定义可能性:

      

    您可以调整报告设置以满足您的特定信息   需要。例如,您可以指定排序和过滤选项   使用特定于报表的设置(例如财务)来选择数据   期间,分类帐和帐户。您可以配置其他处理   每个报告的设置。

    分析报告通过云ERP提供更多定制可能性:

      

    Analytical Report Manager是一个基于Web的创建和创建工具   修改分析报告。用户可以设计和运行自定义   分析报告使用高级数据选择标准,数据   计算规则和可自定义的报表布局设计功能。通过   使用Analytical Report Manager,您可以:创建布局和   根据您的业务需求生成报告的结构。定义数据   具有高度粒度的报告的选择标准。   例如,数据源可以包括一系列帐户,   子帐户和财务期间。使用高级公式进行计算   基于从数据源提取的信息的值。创建   基于来自多个数据源或数据的数据合并报告   其他分析报告。如果,请将报告使用的数据本地化   启用了多语言支持用户输入。

    Acumatica营销材料不应将标准报告编辑器(Windows Form桌面应用程序)称为Cloud ERP产品的一部分。原因很简单,Windows桌面应用程序不是云产品,无法通过浏览器访问,并且在unix / apple OS上不受支持。

    分析报告设计人员支持SSO OAuth,因为设计人员正在使用Cloud ERP产品。

    标准报告设计师不支持OAuth。您可以填写功能请求。我们的营销材料不应将标准报告定制作为Cloud ERP产品的一部分,因为设计师的要求不同。

    我们努力在云ERP平台上提供所有功能。目前,根据我的知识,这些是Cloud ERP上没有的功能:

    • 标准报告编辑器
    • DeviceHub,这是一个充当设备的Windows程序 假脱机程序,因此您可以访问Windows桌面硬件,如打印机 并从云ERP中扩展。
    • 登录页面自定义,这不能通过实现 自定义项目编辑器,您必须手动更改文件 服务器。

    从现在开始,我将专注于标准报表设计器,Windows桌面应用程序。

    设计人员使用Web Service API与Acumatica数据库进行通信。 除了加载和保存RPX文件之外,报表设计器还使用Web服务API来处理'文件 - >构建架构中的功能。像“加载架构”这样的对话框。如果您的用户没有使用“构建架构”。然后在本地只有RPX文件的功能应该足以允许他们使用设计器修改报告。

    加载和保存RPX文件的代码位于PX.Reports.Design.ReportUtils类中,该类是PX.Reports.Design.dll程序集的一部分。它使用SOAP API,据我所知,它不是使用OAuth的首选API,建议将OA Contract API用于支持OAuth的Web服务。重构PX.Reports.Design.dll程序集以使用REST Contract API而不是SOAP API并不是一件容易的事。

    这就是说我相信可以使用Rest API加载和保存RPX文件,只要您放弃构建架构,就可以为报表设计者编写一个包装器来处理该任务。 ;特征。在答案结束时,我会谈到这一点。

    您可以找到using OAuth with Rest API here

    的文档

    有两种方法可以使用Acumatica Web服务,无人值守或无人值守。 出席使用需要用户在使用Web服务之前以某种形式的UI输入其凭据。报表设计者使用这种形式的身份验证。

    无人参与的替代方法是在使用Web服务之前配置和保存身份验证凭据。这样,自动程序可以使用Web服务API,而无需用户坐在计算机前面。

    无人值守使用通常不涉及OAuth,因为您无法让用户专门负责身份验证。例如,如果您将Acumatica与电子商务提供商集成,要求他使用OAuth授权将订单推送到Acumatica是有问题的,因为该流程通常不涉及用户坐在计算机上提供授权的UI。

    从技术上讲,您可以为此任务创建一个永远(很少)过期的OAuth访问令牌,但它绕过了OAuth的目的,OAuth具有临时访问令牌以减轻中间人攻击。强制使用OAuth的认证通常禁止使用永不过期的令牌。这就是为什么要求OAuth进行自动化流程的原因可能引起人们的注意,并引导程序员质疑您的安全策略。

    现在让我们为您的问题寻找可能的解决方案。您必须评估您的安全策略是否允许在没有OAuth授权的情况下使用无人参与的Web服务。如果是这样,那么你的工作就会容易得多。如果没有,那么如果需要处理针对Acumatica的第三方Web服务集成,您可能会在以后遇到类似的问题。

    为了在报表设计器上编写包装器,您必须编写一个Windows桌面应用程序并使用' .RPS'与包装器关联的文件类型,而不是与Acumatica报告设计器关联。

    当用户点击网站上的EDIT REPORT按钮时,' .RPS'文本文件在服务器的内存中生成,用户浏览器重定向到该文件,以便在本地下载。当用户单击RPS文件时,Windows将启动关联的程序(Acumatica报表设计器)并通过命令行参数传递RPS文件路径。然后,报表设计器将显示授权对话框,用户可以在其中输入凭据,Web Service API将下载报表RPX文件。

    RPS文件的内容示例:

    ServiceUrl|http://localhost/AcumaticaInstance/
    ReportName|gl633000.rpx
    User|admin
    

    我们的想法是让你的包装器解析这个RPS文件,使用符合你的安全策略的Web服务API下载相关的RPX文件,然后使用命令行参数为这个RPX文件启动Acumatica报告设计器:

    "c:\...\ReportDesigner.exe" "c:\...'gl633000.rpx"
    

    启动报表设计器时,您希望暂停主线程,直到用户关闭报表设计器。执行此操作的框架方法通常命名为'等待退出'。在关闭报表设计器之前,用户将保存RPX文件。关闭设计器后,您的主线程将恢复,然后您可以使用Web服务API将该RPX文件重新上载到Acumatica数据库。

    简单的方法是创建报表设计器用户,以便在无人参与模式下使用Web Service API。您可以在任何您认为合适的地方(以加密形式)存储这些凭据,并且永远不会在UI中公开它们。在进行Web服务调用时,您可以动态解密这些凭据。在这种情况下,要保护的资产是解密密钥。

    如果OAuth支持需要使用有人值守的Web服务,则需要实现UI以获取这些凭据。如果您必须使用Google登录页面输入凭据,则必须在包装中包含嵌入式浏览器。

    作为其余部分,请注意,此解决方案将允许您修改RPX文件中的报表定义,但不会使您使用需要Web服务API的报表设计器功能,例如“构建架构”。< / p>