如何从 WAC Office 服务器生成 WOPI 访问令牌

How to generate WOPI Access Token from WAC Office Server

我们的一位客户希望我们使用 Office Server 打开 Word 文档。 我已经在本地安装了 WAC 服务器以在浏览器中打开办公文档。

此文档将在我们系统的 iframe 中打开。 我想使用 WOPI API. 从 WAC 服务器生成访问令牌 我做了一些调查,发现 Sharepoint 正在这样做。 我可以在 C# 中使用 HttpClient 来提取此值。但是看起来很脏!而且我确定有更好的方法来生成此访问令牌?我对 SharePoint 和 WAC 服务器完全陌生。请帮忙

有一个 WOPI API 文档。但我仍然对如何构建此请求感到困惑?检查从文档中获取的这张图片。

提前谢谢你:)

您不一定需要实施 /wopibootstrapper 端点或 GetNewAccessToken 方法。它们特定于 Office Online (365) integration program.

您的工作只是生成一个 access_token,它将包含在您应用程序中 WOPI 框架的 POST 请求中(类似于您问题中的图片)。

此令牌将由 WOPI 客户端(WAC/OWA/OOS 服务器)使用。 WOPI 客户端不需要能够破译令牌或以任何其他方式理解它。它只是接受它并将其附加到针对 WOPI 主机发出的每个请求中。另一方面,WOPI 主机需要能够验证令牌。令牌说明给定用户可以访问哪些资源。确保你understand的概念access_token很好。特别是:

Access tokens must be scoped to a single user and resource combination.

如何生成令牌完全取决于您。通常,您会询问您的 user/role 存储(这可以是 Windows ACL 存储、您的数据库或其他东西)给定用户是否有权访问特定资源并将此信息(声明)存储在令牌并加密它(这样它就不能被伪造)。另一种选择是仅包含有关用户的信息,让 WOPI 主机在令牌验证期间确定权限(与 user/role 商店交谈)...这也是可能的,因为正如我之前提到的,WOPI 客户端不关心令牌中的内容。如果您根本不关心授权,您甚至可以设置 access_token=xyz 并且从不在您的 WOPI 主机中检查它。

生成和验证令牌的过程在 OfficeDev/PnP-WOPI 中得到了很好的展示。请参阅 HomeControllerWopiSecurity 类。

你可以在我的另一个回答中看到一些其他的例子