错误:AADSTS500011:在租户中找不到名为“URL”的资源主体

问题描述 投票:0回答:6

我正在尝试使用 https://learn.microsoft.com/en-us/sharepoint/dev/spfx/web-parts/get-started/build-a- 中的模板将应用程序添加到我们的 SharePoint Online 网站hello-world-web-part,当我们部署到 SharePoint 并将应用程序/Web 部件添加到测试 SharePoint 网站时,我们会收到以下错误。我们使用 TypeScript 作为模板使用。

还有其他人遇到过这个问题或者知道在哪里寻找这个问题吗?

发现 [object Object]驱动程序显示外部错误:错误:AADSTS500011:在名为 7018324c-9efd-4880-809d-b2e6bb1606b6 的租户中找不到名为 https://driverdisplayexternal.azurewebsites.net 的资源主体。如果应用程序尚未由租户管理员安装或未得到租户中任何用户的同意,则可能会发生这种情况。您可能已将身份验证请求发送给了错误的租户。跟踪 ID:358b22eb-cd2c-4091-b592-5a57cbc21d00 相关 ID:ec96d656-1a36-42e2-a2b9-3ff78efc1e2e 时间戳:2019-10-01 16:26:06Z

我们已经添加了对我们自己的客户端的调用,如下所示。我们不确定为什么找不到资源主体。租户 ID 匹配,并且似乎已正确设置身份验证。

HelloWorldWebPart.ts

...
   this.context.aadHttpClientFactory
      .getClient('https://driverdisplayexternal.azurewebsites.net')
      .then((client: AadHttpClient): void => {

        client
          .get('https://driverdisplayexternal.azurewebsites.net/api/values', AadHttpClient.configurations.v1)
          .then((response: HttpClientResponse): Promise < Order[] > => {
            this.domElement.innerHTML += 'Received a response from Driver Display External: ' + response;
            return response.json();
          })

          .catch(error => {

            this.domElement.innerHTML += 'Driver Display External Error:  ' + error;
            console.error(error);
          });
      });
...

package-solution.json

{
  "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/package-solution.schema.json",
  "solution": {
    "name": "helloworld-webpart-client-side-solution",
    "id": "**ID**",
    "version": "4.1.0.0",
    "includeClientSideAssets": true,
    "isDomainIsolated": false,
    "webApiPermissionRequests": [
      {
        "resource": "DriverDisplayExternal",
       "scope": "User.Read.All"
      }
     ]
  },
  "paths": {
    "zippedPackage": "solution/helloworld-webpart.sppkg"
  }
}

任何有关问题所在的帮助或指导将非常感激。预先感谢!

javascript typescript azure azure-active-directory sharepoint-online
6个回答
2
投票

从未使用过此 API,但如果我不得不猜测您需要更改此处的值:

      .getClient('https://driverdisplayexternal.azurewebsites.net')

您可以使用客户端 ID/应用程序 ID,或应用程序 ID URI。


1
投票

有时,当您为请求访问的范围或其他配置参数设置错误的名称时,可能会出现此问题。

我建议仔细检查范围名称,或者直接使用Azure门户中的“复制”按钮。

就我而言,这是范围名称上的一个简单拼写错误。


0
投票

不确定您是否找到了答案。当您使用 SPFx 请求您自己的自定义 Web API 端点时。有几个步骤:

  • 请求权限,以便您可以前往 SPO 管理员批准您请求的权限。对于这种情况,webApiPermissionRequests->resources 需要您的 AAD 应用程序的服务主体 DisplayName。创建 AAD 应用程序后,您可以运行 Get-AzureADServicePrincipal 来获取所有 ServicePrincipal。
  • 一旦您请求权限,从您的代码中,您需要调用 AadHttpClient.getClient() 来根据您想要的 api ResourceEndpoint 获取 aadHttpClient 对象,对于这种情况,您需要传递您的 Web api 的应用程序 ID URI,该 URI 可以找到从您的 AAD 应用程序清单 ->“identifierUris”。一般来说,这应该类似于 api://[clientid] 格式。但您可以将其更改为任何唯一值。 我希望它有帮助。

0
投票

就我而言,当我使用多租户 API时,我必须使用应用程序 ID。


0
投票

就我而言,TenantId 和 ClientId 都可以。

它们可以在AAD中找到。

TenantId
就在登陆页面上:

然后在同一页面上单击

Applications
然后选项卡
All Applications
找到您的应用程序,应该有
ClientId
检查它们是否匹配。

如果这还不够,请单击应用程序并查找角色

对我来说,添加这些轮子后所缺少的角色再次开始滚动:


0
投票

我正在正常使用 jwt,突然开始出现此错误。我设法通过撤销用户在 Azure 门户上的所有会话,然后生成新令牌来使其工作。

© www.soinside.com 2019 - 2024. All rights reserved.