#asp.net #sharepoint #office365 #sharepoint-online
#asp.net #sharepoint #office365 #sharepoint-online
Вопрос:
Я довольно долго искал по этой теме, не найдя серебряной пули. У нас есть решение для интрасети в ASP.NET где мы просто хотим показать некоторые файлы из нашего Sharepoint Online в Office 365.
При поиске в Google появляется несколько обращений, но, похоже, ничто не является «простым» способом. Я не являюсь разработчиком Sharepoint, но хорошо разбираюсь в концепциях, поскольку я управляю установками Office 365 и Sharepoint Online в нашей компании.
Я нашел текущие ответы, которые говорят мне, что службы REST — это правильный путь, но здесь мне нужен токен OATH для доступа к ним, и здесь мои знания Sharepoint ограничены. Из того, что я прочитал, токен может быть предоставлен только через установленное приложение Sharepoint, но я точно знаю, что это можно сделать и без него. Я приобрел средство синхронизации, которое синхронизирует наш общий файловый ресурс со списком документов Sharepoint, и для этого мне не нужны никакие токены, я просто ввожу свои учетные данные, и мне не нужно ничего устанавливать в Sharepoint.
Итак, что я хочу получить от этого вопроса?
-
Кто-то, кто хорошо знает Sharepoint, чтобы направить меня в правильном направлении и у кого, возможно, есть руководство и знает, что этот метод работает. Возможно, REST — это правильный путь, но просто кажется странным, что мое программное обеспечение синхронизации может сделать это без then.
-
Если мне действительно нужно установить средство предоставления токенов в Sharepoint, небольшая помощь в том, что нужно знать о безопасности и как к ней подойти наилучшим образом.
Мы высоко ценим любую помощь и заранее благодарим! 🙂
Ответ №1:
У Microsoft есть два набора API, которые могут обращаться к SharePoint Online:
-
Клиентская объектная модель SharePoint (CSOM):
С помощью этого вы можете просто использовать имя пользователя и пароль для аутентификации. перейдите по ссылке, чтобы найти примеры того, как получить доступ к списку документов.
-
При этом вам необходимо использовать
OAuth
токен для проверки подлинности.
В вашем случае вам следует использовать первый.
Комментарии:
1. Спасибо за это 🙂 Извините за мой поздний ответ, меня не было несколько дней, но большое спасибо за помощь 🙂
Ответ №2:
SharePoint Online также поддерживает режим проверки подлинности на основе утверждений. Общая идея здесь заключается в получении файлов cookie аутентификации (помимо потока аутентификации OAuth, в котором выдается токен доступа) из учетных данных пользователя. После получения cookie-файла аутентификации вы можете выполнить запросы SOAP с аутентификацией (например, через CSOM API) или REST к ресурсам SharePoint Online, как показано ниже.
Поскольку вы разрабатываете ASP.NET можно использовать веб-приложение,
SharePointOnlineCredentials
класс из SharePoint Online Client Components SDK, который в основном реализует схему аутентификации на основе утверждений. Он может быть установлен через nuget
Пример 1. запрашивать элементы списка через CSOM API
using (var ctx = GetContext(webUri.ToString(), userName, password))
{
var list = ctx.Web.Lists.GetByTitle("Documents");
var items = list.GetItems(CamlQuery.CreateAllItemsQuery());
ctx.Load(items);
ctx.ExecuteQuery();
foreach (var item in items)
{
Console.WriteLine(item.FieldValues["FileRef"]);
}
}
где
private static ClientContext GetContext(string url,string username, string password)
{
var ctx = new ClientContext(url);
var securePassword = new SecureString();
foreach (char c in password) securePassword.AppendChar(c);
ctx.Credentials = new SharePointOnlineCredentials(username, securePassword);
return ctx;
}
Пример 2. запрашивать элементы списка через REST API
using (var client = new SPHttpClient(webUri, userName, password))
{
var listTitle = "Tasks";
var endpointUrl = string.Format("{0}/_api/web/lists/getbytitle('{1}')/items",webUri,listTitle);
var data = client.ExecuteJson(endpointUrl);
foreach (var item in data["value"])
{
Console.WriteLine(item["Title"]);
}
}
где
SPHttpClient.cs
— реализует HTTP-клиент для SharePoint Online ( SPHttpClient
класс)
SPHttpClientHandler.cs
— реализует HTTP-обработчик для SharePoint Online
Комментарии:
1. Огромное спасибо! Это было именно то, что я искал! 🙂