java - 如何通过自定义 Web 应用程序连接到 Alfresco 文档

标签 java ms-word alfresco

我们的 Java Web 应用程序使用 Alfresco 作为 DMS。该应用程序使用一个系统用户连接到 Alfresco。应用程序通过一些业务逻辑自行管理访问权限。

现在我想要完成的是能够使用 MS Office URI 对 Alfresco 中的 Word 文档进行在线编辑。例如,这个 URL 看起来像 ms-word:ofe|u| https://ourwebapp.com/documents/mydocument.docx 但是,如果我们像这样打开文档,用户最终将能够在 Alfresco 上执行我们不希望他们执行的操作。

因为我们希望确保我们的文档安全可靠,所以我们不希望用户能够“直接”获取 Alfresco 文档,而是通过我们的应用程序获取。直接打开 Alfresco 文档意味着每个用户都应该获得唯一的 Alfresco 用户名/密码,但我们没有,我们也不希望这样,因为我们已经有很多很多文档存在于 Alfresco 中。

肯定还有其他公司遇到这个问题吗? IE。与一个系统用户一起使用他们的 DMS?

我已经尝试过创建 REST 端点。 Spring Filter 确保添加带有用户名/密码的授权 header 并将请求转发到 Alfresco。然后来自 Alfresco 的响应被传回给用户。然而,这最多会导致文档以只读方式打开。此外,使用此系统用户凭据与用户建立连接似乎不太安全。据我所知,用户将能够在 Alfresco 中做他不应该做的事情。就像编辑甚至查看其他文档一样。有点像这样:

enter image description here

关于 ms-word 协议(protocol)如何准确工作的文档很少,也许您可​​以为我指出正确的方向?或者建议我可以尝试一些解决方法?

最佳答案

要使用共享点协议(protocol)(SPP)进行此操作,您必须在应用程序前面重新实现整个协议(protocol)服务器,因为您可以控制访问。据我所知,没有免费的甚至可用的 SPP 实现可供您(重新)使用。

Alfresco 协议(protocol)服务器可能不是一个选项,因为您不能/不希望将应用程序的访问控制镜像到 alfresco。如果您使用文件协议(protocol)访问 Alfresco 或 Sharepoint 等系统,您将获得过多的访问权限,正如您已经描述的那样。通过遵循应用程序用户的概念,如果您无法将访问逻辑镜像到 alfresco,您可能会被排除在最终用户的 Alfresco 概念之外。

几年前,我们实现了动态低级访问投票器来升级或降级 Alfresco 节点服务内的访问权限,以允许基于类型和元数据的特定权限。同样,有人可以实现另一个系统的接口(interface),以根据外部数据委托(delegate)权限检查,但这会大大减慢所有涉及的系统的速度。

我们有类似的要求,因为我们从多个企业来源(包括 Alfresco)访问来 self 们自己的业务流程产品的文档和数据,该产品具有基于规则和流程的访问概念,基于案例、文档涉及的流程,而不是基于文件夹或文档的静态 ACL。我们使用安装在客户端上的本地服务与浏览器应用程序合作,在从本地临时( checkout )路径关闭文件后下载、打开和保存文档。我们的本地客户端不知道 Alfresco,并且仅使用 JSON Web token 针对我们的服务进行身份验证。

所以我的答案更多的是一个概念,而不是一个现成的解决方案,希望能有所帮助。

关于java - 如何通过自定义 Web 应用程序连接到 Alfresco 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56942303/

相关文章:

java - 计算不同单词的数量

java - lombok 注释在 intellij 19.3 中不起作用

vba - 如何选择正在运行的 Word 实例并在其中打开文档

c# - 我如何使用 OpenXML C# 水平合并 Microsoft Word 表格单元格

vba - 如何像在 Microsoft Excel 中那样创建 Word VBA 个人 VBA 代码库?

java - 读取与精确日期模式 YYYY-MM-DD 匹配的输入

java - 整数加倍并保留小数位

java - 自动生成用户密码并直接向相应用户发送有关其在 Alfresco 中的登录凭据的邮件

java - 远程更新属性 “cmis:creationDate and cmis:lastModificationDate”

露天门票有效期