gpt4 book ai didi

sharepoint - AdalServiceException : AADSTS50001 when provisioning files on site collections

转载 作者:行者123 更新时间:2023-12-03 04:34:57 27 4
gpt4 key购买 nike

我正在编写一个使用 Windows Azure AD 向 SharePoint Online 进行身份验证的应用程序。我正在尝试将应用程序中的一些文件配置到 SharePoint 租户上的现有网站集。这适用于位于 [subdomain].sharepoint.com 上的默认网站集,但是当我尝试在非默认网站集上配置文件时,即[subdomain].sharepoint.com/mysite 代码抛出此异常:

[WebException: The remote server returned an error: (400) Bad Request.]
System.Net.HttpWebRequest.GetResponse() +6540964
Microsoft.IdentityModel.Clients.ActiveDirectory.<GetResponseSyncOrAsync>d__2.MoveNext() +382
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52
Microsoft.IdentityModel.Clients.ActiveDirectory.<SendPostRequestAndDeserializeJsonResponseAsync>d__0`1.MoveNext() +414

[AdalServiceException: AADSTS50001: Resource 'https://[subdomain].sharepoint.com/sites/mysite' is not registered for the account.
Trace ID: f9d32123-4a42-4890-bf5d-7e979083ed18
Correlation ID: 71a6d021-270d-4974-8bd6-b17fb06aab9d
Timestamp: 2014-12-19 11:21:30Z]
Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext.RunAsyncTask(Task`1 task) +89
Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext.AcquireTokenByRefreshToken(String refreshToken, ClientCredential clientCredential, String resource) +59
...Authorization.Azure.TokenHelper.GetContext(String refreshToken, String site) in d:\...\Authorization\Azure\TokenHelper.cs:30
...Authorization.AuthorizationManager.GetClientContextFromAzureCode(String code, String site) in d:\..\Authorization\AuthorizationManager.cs:57
...Pages.Install.btnInstall_Click(Object sender, EventArgs e) in d:\..\Pages\Install.aspx.cs:65
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9628114
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +103
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724

我检查了 AD 中的应用程序权限,它具有在所有网站集上写入的权限。我的配置有问题还是应该尝试不同的方法?

最佳答案

我们这里也遇到了同样的问题。在我们的 C# 应用程序中,我们使用 HttpClient 来访问 SharePoint REST API 以从列表中读取项目。在开发过程中,我们在 Team Site 下设置了一个列表。我们用来访问 API 的 URL 看起来有点像这样:

https://mycompany.sharepoint.com/_api/web/lists/getbytitle('MyList')/items

在 App.config 中,我们设置了一个 ServiceResourceId 参数。在调用 Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContextAcquireToken() 方法时,它被用作 resource 参数。重要的是,我们还使用它作为 API 调用的基本 URL。

当我们尝试转移到生产场景时,相关列表位于自定义网站中,而不是团队网站中。我们可以登录浏览器并点击如下 URL,然后查看返回的结果:

https://mycompanylive.sharepoint.com/MySiteName/_api/web/lists/getbytitle('MyList')/items

我们已将 ServiceResourceId 更改为 https://mycompanylive.sharepoint.com/MySiteName/,这不再允许我们登录并引发您提到的异常。修复方法是使用一个带有基本服务 URL 的配置参数,该参数在身份验证时使用,然后另一个参数在调用 API 时用作基本 URL。在我提到的示例中,它看起来像这样:

<!-- Pass this to AcquireToken() during authentication. This should be the root of your SharePoint instance. -->
<add key="ServiceResourceLoginId" value="https://mycompanylive.sharepoint.com/"/>
<!-- The base URI when using HttpClient to call the API. -->
<add key="APIBaseURI" value="https://mycompanylive.sharepoint.com/MySiteName/"/>

关于sharepoint - AdalServiceException : AADSTS50001 when provisioning files on site collections,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27566567/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com