MSTeams 桌面客户端中的 SPFx Web 部件抛出 UnauthorizedAccessException

2023-12-04

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

在 MSTeams 桌面客户端中使用 SPFx Web 部件加载 SP 页面时,AadHttpClient 失败

我也有一个Sharepoint 在线网站其中我有一个SPFx Web 部件它利用AadHttp客户端.

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

我的设置一瞥:

enter image description here

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

  • 将 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”:{“代码”:“-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”:{“代码”:“-1, System.AggregateException","message":{"lang":"en-US","value":"一个或 发生更多错误。"}}}

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


我最近在调用图形 API 的 Web 部件中遇到了类似的问题。在桌面团队中,呼叫从来不会发生,而且常常会卡住。我能够通过以下步骤修复它:-

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

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

步骤 3. 单击SharePoint Online Client Extensibility Web Application Principal

步骤 4. 单击左侧菜单上的 Manifest 步骤 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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MSTeams 桌面客户端中的 SPFx Web 部件抛出 UnauthorizedAccessException 的相关文章

随机推荐