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

时间:2019-10-01 21:58:25

标签: javascript typescript azure azure-active-directory sharepoint-online

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

还有其他人遇到此问题或知道在哪里寻找该问题吗?

找到了[object Object] Driver Display外部错误:错误: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

file_put_contents('hello.php','<'."?php print 'Hello there'; ?>");

package-solution.json

...
   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);
          });
      });
...

对于可能出现问题的任何帮助或指示,我们将不胜感激。预先感谢!

5 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

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

答案 4 :(得分:0)

就我而言,TenantId 和 ClientId 都没有问题。

它们可以在 in AAD 中找到。 TenantId 就在着陆页上:

enter image description here

然后在同一页面上点击 Applications 然后标签 All Applications 找到您的应用程序应该有 ClientId 检查它们是否匹配。

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

对我来说,添加这些轮子后,角色又开始滚动了:

enter image description here