我们的Java Web应用程序使用Alfresco作为DMS。该应用程序使用一个单一的系统用户来连接Alfresco。该应用程序使用某些业务逻辑本身来管理访问权限。
现在我想完成的就是能够使用MS Office URI在线编辑Alfresco中的Word文档。例如,这是一个类似于ms-word:ofe | u | https://ourwebapp.com/documents/mydocument.docx的URL 但是,如果我们这样打开文档,用户最终将能够在Alfresco上执行我们不希望他们执行的操作。
因为我们要确保文档的安全,所以我们不希望用户能够通过应用程序“直接”获得Alfresco文档。直接打开Alfresco文档将意味着每个用户都应该获得一个唯一的Alfresco用户名/密码,而我们没有该用户名/密码,因为我们已经有很多生活在Alfresco中的文档,因此我们不希望这样做。
当然还有其他公司遇到此问题吗?即与一个系统用户一起使用他们的DMS?
我已经尝试过的是制作REST端点。 Spring Filter确保添加具有用户名/密码的授权标头,并将请求转发到Alfresco。然后,来自Alfresco的响应将传递回用户。但是,这导致文档最多只能以只读方式打开。此外,使用此系统用户凭据与用户建立连接似乎并不十分安全。据我所知,用户将能够在Alfresco中做他不应该做的事情。喜欢编辑甚至查看其他文档。有点像这样:
关于ms-word协议的工作原理的文档很少,也许您可以为我指明正确的方向?还是建议我可以尝试的一些解决方法?
答案 0 :(得分:3)
要使用共享点协议(SPP)来实现此目的,您将必须在应用程序前面重新实现整个协议服务器,因为您必须控制访问。我知道您没有免费甚至可用的SPP实施方案。
Alfresco协议服务器可能不是一个选项,因为您不能/希望将应用程序中的镜像访问控制转移到户外。如果您使用文件协议访问Alfresco或Sharepoint之类的系统,您将获得如前所述的太多访问权限。通过遵循应用程序用户的概念,如果您无法将访问逻辑反映到露天环境中,则可能无法将Alfresco概念应用于最终用户。
几年前,我们在Alfresco的节点服务中实现了动态低级别访问投票器,以升迁或降级访问权限,以允许基于类型和元数据的特定权限。有人可以实现与另一个系统的接口以基于外部数据委派权限检查的相同方法,但这会大大降低所有涉及的系统的速度。
我们有一个类似的要求,因为我们从自己的业务流程产品访问包括Alfresco在内的多个企业来源的文档和数据,该产品具有基于案例的规则和基于流程的访问概念,文档所涉及的流程不在文件夹或文档的静态ACL。我们使用与浏览器应用程序一起安装在客户端上的本地服务,在从本地temporay(签出)路径关闭文件后下载,打开和保存文档。我们的本地客户端不了解Alfresco,仅使用JSON Web令牌针对我们的服务进行了身份验证。
所以我的回答更多是一个概念,不是现成的解决方案,希望对您有所帮助。