【问题标题】:SPFx webpart in MSTeams Desktop Client throws an UnauthorizedAccessExceptionMSTeams 桌面客户端中的 SPFx webpart 引发 UnauthorizedAccessException
【发布时间】:2020-05-08 16:08:46
【问题描述】:

这个问题与之前在 StackOverflow 上提出的问题非常相似。但是,我得到的错误是不同的。

AadHttpClient fails when loading SP page with SPFx webpart in MSTeams Desktop Client

我还有一个 Sharepoint Online 站点,其中有一个使用 AadHttpClientSPFx Web 部件

如果我从浏览器导航到 Sharepoint 站点或打开 MS Teams Web 客户端,则此 Web 部件有效。

一瞥我的设置:

这是我面临的问题的“重现步骤”概述。

  • 将 Web 部件部署到 SharePoint
  • 在 SharePoint 中查看 Web 部件 - Web 部件显示并正常加载
  • 在 Teams 中添加 SharePoint 选项卡并将其绑定到带有 Web 部件的页面
  • 在 Teams Desktop 客户端中查看选项卡 - 数据无法加载到 Web 部件中(请参阅下文)
  • 在 Teams Web 客户端中查看选项卡 - Web 部件显示并正常加载

当我调试 MS Teams 桌面客户端时,我在“网络请求”选项卡中进行了此调用:

https://{mytenant}.sharepoint.com/sites/{mysite}/_api/Microsoft.SharePoint.Internal.ClientSideComponent.Token.AcquireOBOToken?resource={GUID of my AAD app registration}&clientId={GUID of SharePoint Online Client Extensibility AAD app registration}

响应:

错误 403:

{"odata.error":{"code":"-2147024891, System.UnauthorizedAccessException","message":{"lang":"en-US","value":"访问 否认。您无权执行此操作或访问 这个资源。"}}}

一个有趣的观察是,这个 Web 请求只发生在 Microsoft Teams 桌面客户端中。

我很想知道为什么这只发生在 MS Teams 桌面客户端,而不是 MS Teams Web 客户端或 Sharepoint Online。

更新:2020 年 10 月 2 日

另一个观察结果:我们在不同的租户(个人租户而不是我们的公司租户)上尝试了相同的设置。我们注意到,当在 Azure Active Directory 上打开 MFA 时,可能会重现相同的行为。

失败的请求是:

https://{personal tenant}.sharepoint.com/sites/{site name}/_api/Microsoft.SharePoint.Internal.ClientSideComponent.Token.AcquireOBOToken?resource={GUID of the AD app registration}&clientId={GUID of the SPO Client Extensibility app registration}

但是,现在返回的错误是 500 响应:

{"odata.error":{"code":"-1, System.AggregateException","message":{"lang":"en-US","value":"一个或 出现更多错误。"}}}

在 Github 上发现了类似的问题(但出现了不同的错误):https://github.com/SharePoint/sp-dev-docs/issues/4915

【问题讨论】:

  • 能否请您检查一下 this.context.pageContext.web.absoluteUrl;你得到什么网址?
  • @Trinetra-MSFT 当然可以。我检查了网络和桌面客户端。我得到的值是:https://{TENANT}.sharepoint.com/sites/SA很高兴根据需要提供更多详细信息
  • 如果你得到的 url 相同,那肯定是访问问题。您能否检查您是否具有访问共享点资源的适当权限?当 webpart 托管在 sharepoint 应用程序目录中时,可以选择与 sharepoint 应用程序目录中的团队同步。我假设你已经做到了。这也可能导致未经授权的访问。
  • @Trinetra-MSFT 是的,我可以访问 Sharepoint 资源。事实上,我自己部署了 Web 部件。但是,我在 Sharepoint 应用程序目录中看不到“同步到团队”按钮。我是否应该向租户的全局管理员询问特定权限?另外,您知道为什么 Web 部件可以在 Teams 的 Web 客户端上运行,而不是在桌面客户端上运行吗?
  • 与 Teams 同步将在 sharepoint 应用目录中提供。如果不是,则可能是您创建了 SPFx webpart 项目 v1.7。仍然很少快速检查您是否在清单文件的 validDomain[] 列表中添加了共享点 URL?这是creating web part for teams tabcreating the manifest for webpart 的链接。

标签: sharepoint azure-active-directory web-parts microsoft-teams


【解决方案1】:

我最近遇到了一个调用 graphAPI 的 webpart 的类似问题。在桌面团队中,电话永远不会发生,而且会卡住。我可以通过以下步骤修复它:-

步骤 1. 访问租户管理站点上的新 API 权限管理页面。这会在幕后创建一个客户端机密。

第 2 步。转到 -> https://aad.portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps

第 3 步。点击SharePoint Online Client Extensibility Web Application Principal

Step 4. 点击左侧菜单中的 Manifest Step 5. 从 oAuth2Permission 数组中复制 id

"oauth2Permissions": [
        {
            "adminConsentDescription": "Allow the application to access SharePoint Online Client Extensibility Web Application Principal on behalf of the signed-in user.",
            "adminConsentDisplayName": "Access SharePoint Online Client Extensibility Web Application Principal",
            "id": "2143704b-186b-4210-b555-d03aa61823cf",
            "isEnabled": true,
            "lang": null,
            "origin": "Application",
            "type": "User",
            "userConsentDescription": "Allow the application to access SharePoint Online Client Extensibility Web Application Principal on your behalf.",
            "userConsentDisplayName": "Access SharePoint Online Client Extensibility Web Application Principal",
            "value": "user_impersonation"
        }
    ],

步骤 6. 将“preAuthorizedApplications”条目替换为以下 json。保留 appId 如下所示。

"preAuthorizedApplications": [
    {
        "appId": "00000003-0000-0ff1-ce00-000000000000",
        "permissionIds": [
            "YOUR COPIED ID FROM STEP 5"
        ]
    }
],

第 7 步。点击保存。

让我知道这是否适合您。我从https://github.com/SharePoint/sp-dev-docs/issues/3923#issuecomment-514726341引用了上述步骤

【讨论】:

  • 这是解决问题的方法吗?我在清单文件中有相同的设置,但仍然无法正常工作。
猜你喜欢
  • 2019-09-28
  • 2020-12-13
  • 2020-03-17
  • 2013-04-26
  • 1970-01-01
  • 2011-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多