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

时间:2017-07-25 14:19:57

标签: c# sharepoint office365 ms-wopi

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

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

Access Token Generated from SharePoint

有一个WOPI API文档。但我仍然困惑如何建立这个请求?检查从文档中获取的图像。

enter image description here

提前谢谢你:)

1 个答案:

答案 0 :(得分:3)

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

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

此令牌将由WOPI客户端(WAC / OWA / OOS Server)使用。 WOPI客户端不需要能够解密令牌或以任何其他方式理解令牌。它只需要它并将其附加到针对WOPI主机的每个请求。另一方面,WOPI主机需要能够验证令牌。令牌表示给定用户可以访问的资源。确保understand access_token=xyz的概念OfficeDev/PnP-WOPI。特别是:

  

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

如何生成令牌完全取决于您。通常情况下,您是否要求您的用户/角色存储(可以是Windows ACL存储,您的数据库或其他内容)是否给定用户可以访问某个资源并将此信息(声明)存储在令牌中并对其进行加密(这样它就不会被伪造)。另一个选择是仅包含有关用户的信息,让WOPI主机在令牌验证期间找出权限(与用户/角色存储对话)......这也是可能的,因为正如我之前提到的,WOPI客户端没有&# 39;关心令牌中的内容。你甚至可以设置HomeController,如果你根本不关心授权,就不要在你的WOPI主机中检查它。

here充分展示了生成和验证令牌的过程。请参阅WopiSecurityextern "C" { JNIEXPORT jint JNICALL Java_com_example_nimashahbazi_mooshak_EncryptingActivity_encrypt(JNIEnv *env, jobject obj, jstring encryptionKey, jstring inputFile, jstring outputFile); JNIEXPORT jint JNICALL Java_com_example_nimashahbazi_mooshak_DecryptingActivity_decrypt(JNIEnv *env, jobject obj, jstring encryptionKey, jstring inputFile, jstring outputFile); } 类。

您可以在我的其他答案{{3}}中看到其他一些示例。