Когда я пытаюсь загрузить файл, используя токен на предъявителя, действительный для связи с моим клиентом SharePoint, я получаю эту ошибку:
URL недействителен. Это может относиться к несуществующему файлу или папке или к действительному файлу или папке, которых нет в текущей сети.
Для получения носителя SP я использую этот метод:
private string BearerHeader
{
get
{
AuthenticationResult authResult = null;
string result = string.Empty;
if (HttpContext.Current != null)
{
string sourceBearer = HttpContext.Current.Request.Headers["Authorization"];
if (sourceBearer.IndexOf(BearerPrefix) <= -1)
{
return string.Empty;
}
ClientCredential clientCred = new ClientCredential(ConfigurationManager.AppSettings["ida:Audience"], ConfigurationManager.AppSettings["ida:Secret"]);
UserAssertion userAssertion = new UserAssertion(sourceBearer.Split(' ')[1]);
AuthenticationContext authContext = new AuthenticationContext(ConfigurationManager.AppSettings["ida:Instance"] + ConfigurationManager.AppSettings["ida:Tenant"]);
var resource = new Uri(ConfigurationManager.AppSettings["SharePointCollection"]).GetLeftPart(UriPartial.Authority);
authResult = authContext.AcquireTokenAsync(resource, clientCred, userAssertion).Result;
result = authResult.AccessToken;
}
return BearerPrefix + result;
}
}
Токен на предъявителя работает с SPQuery, другие читают и удаляют команды.
Когда я использую один и тот же код с контекстом учетной записи службы. загрузка работает хорошо.