401 несанкционирован для ExecuteQuery в SharePoint CSOMC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 401 несанкционирован для ExecuteQuery в SharePoint CSOM

Сообщение Anonymous »

Я пытаюсь подключить сайт SharePoint с идентификатором клиента и секретом, но получает 401 несанкционированную ошибку при нажатии на метод executeQuery () .
При выполнении дела. Регистрации приложений, как Microsoft Graph, так и SharePoint API -разрешения с полным управлением сайтом, включая доверительное приложение через Appinv.aspx . Все еще получает 401 несанкционированную ошибку .
Поскольку ACS выходит на пенсию, необходимо ли нам следовать любым другим разрешениям для доступа к сайту на уровне акции. Тот же запрос выполнения работает нормально для идентификатора клиента, комбинации сертификатов. Но не работает для идентификатора клиента и секрета.

Код: Выделить всё

static void Main(string[] args)
{
var authManager = new AuthenticationManager("***************************", "C:\\Program Files\\OpenSSL-Win64\\bin\\certificate.pfx", "*******", "********.onmicrosoft.com");
using (var cc = authManager.GetContext("https://****.sharepoint.com/sites/****"))
{
cc.Load(cc.Web, p => p.Title);
cc.ExecuteQuery();
Console.WriteLine(cc.Web.Title);
ListCollection listCollection = cc.Web.Lists;
cc.ExecuteQuery(); // this is working fine
}
;
// Replace with your SharePoint Online details
string siteUrl = "****************************";
string tenantId = "***************************";
string clientId = "********************************";
string clientSecret = "******************************"; // App secret

try
{
using (var context = GetClientContextWithOAuth(siteUrl, tenantId, clientId, clientSecret))
{
// Example: Retrieve web title
Web web = context.Web;
context.Load(web, w => w.Title);
context.ExecuteQuery(); // this is throwing 401 unauthorized error

Console.WriteLine("Connected to: " + web.Title);
}
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
}

private static ClientContext GetClientContextWithOAuth(string siteUrl, string tenantId, string clientId, string clientSecret)
{
// Azure AD OAuth 2.0 endpoint
string authority = $"https://login.microsoftonline.com/*******************";

// Use MSAL to acquire an access token
var app = ConfidentialClientApplicationBuilder.Create(clientId)
.WithClientSecret(clientSecret)
.WithAuthority(new Uri(authority))
.Build();

var authResult = app.AcquireTokenForClient(new[] { $"{siteUrl}/.default" }).ExecuteAsync().Result;

if (authResult == null)
{
throw new Exception("Failed to acquire the access token.");
}

// Use the access token to authenticate the ClientContext
var context = new ClientContext(siteUrl);
context.ExecutingWebRequest += (sender, e) =>
{
e.WebRequestExecutor.WebRequest.Headers["Authorization"] = "Bearer " + authResult.AccessToken;
};

return context;
}
< /code>
Я попробовал соединение SharePoint с идентификатором клиента и комбинацией сертификатов. Для этого он работает нормально, где для ClientId 
и секретной комбинации она бросает 401 ошибка

Подробнее здесь: https://stackoverflow.com/questions/794 ... point-csom
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»