C# 如何从WAC Office Server生成WOPI访问令牌

C# 如何从WAC Office Server生成WOPI访问令牌,c#,sharepoint,office365,ms-wopi,C#,Sharepoint,Office365,Ms Wopi,我们的一位客户希望我们使用Office Server打开Word文档。 我已经在本地安装了WACServer,以便在浏览器中打开office文档 此文档将在我们的系统中的iframe中打开。 我想使用WOPI API从WAC服务器生成访问令牌。 我做了一些调查,发现Sharepoint正在这样做。 我可以在C#中使用HttpClient来提取这个值。但是它看起来很脏!我确信有更好的方法来生成这个访问令牌?我是SharePoint和WAC服务器的新手。请帮忙 有一个WOPI API文档。但是我仍

我们的一位客户希望我们使用Office Server打开Word文档。 我已经在本地安装了WACServer,以便在浏览器中打开office文档

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

有一个WOPI API文档。但是我仍然不知道如何构建这个请求?检查从文档中获取的此图像


提前感谢:)

您不必实现
/wopibootstrapper
端点或
GetNewAccessToken
方法。它们是特定于特定环境的

您的工作只是生成一个
access\u令牌
,该令牌将包含在应用程序中WOPI帧的POST请求中(类似于您问题中的图片)

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

访问令牌的范围必须限定为单个用户和资源组合

如何生成令牌完全取决于您。通常,您会询问您的用户/角色存储(这可以是Windows ACL存储、您的数据库或其他内容)给定用户是否有权访问特定资源,并将此信息(声明)存储在令牌中并对其进行加密(以防伪造)。另一种选择是只包含有关用户的信息,并让WOPI主机在令牌验证期间确定权限(与用户/角色存储区对话)……这也是可能的,因为正如我前面提到的,WOPI客户端不关心令牌中的内容。您甚至可以设置
access\u token=xyz
,如果您根本不关心授权,就永远不要在WOPI主机中检查它

中很好地演示了生成和验证令牌的过程。请参阅
HomeController
WopiSecurity

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