Получите токен доступа пользователя SharePoint Online без регистрации в качестве приложения

Я ищу способ получить токен пользователя с идентификатором пользователя и паролем для sharepoint в Интернете через С #. Я могу зарегистрироваться как приложение с клиентом и секретом клиента, но я его не ищу.

PnP имеет PowerShell, рекомендующий Get-PnPAccessToken, и ему просто нужно то же самое через C #.

Есть ли способ получить его для SharePoint в Интернете через C #?

Большое спасибо,


person oypatel    schedule 14.04.2021    source источник
comment
Есть ли обновление ? Сработала ли библиотека OfficeDevPnP.Core для получения токена доступа пользователя?   -  person Jerry    schedule 16.04.2021


Ответы (2)


Самый простой способ получить доступ к ресурсам SharePoint Online - использовать .Net SDK (Microsoft.SharePoint.Client). Вы можете обратиться к образцу кода здесь.


ROPC (учетные данные пароля владельца ресурса ) flow позволяет приложению входить в систему пользователя, напрямую обрабатывая его пароль. Но это требует очень высокой степени доверия к приложению и несет в себе риски, которых нет в других потоках. Так что это не рекомендуется.

Примечание. Убедитесь, что вы добавили необходимые делегированные разрешения для SharePoint Online.

result = await context.AcquireTokenAsync(resource, clientId, new UserPasswordCredential(username, password));

Для получения дополнительной информации см. здесь.

person Pamela Peng    schedule 14.04.2021

Используя библиотеку OfficeDevPnP.Core, также можно получить токен доступа, установить с помощью команды Nuget Console:

Установочный пакет SharePointPnPCoreOnline - версия 3.28.2012

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OfficeDevPnP.Core;
using Microsoft.SharePoint.Client;

namespace UserAccessToken
{
    class Program
    {
        static void Main(string[] args)
        {
            string siteUrl = "https://tenant.sharepoint.com";
            string userName = "[email protected]";
            string Password = "********";

            var accessToken = GetUserAuthToken(siteUrl,userName, Password);
            Console.Read();
        }

        private static string GetUserAuthToken(string siteUrl, string userPrincipal, string Pwd)
        {
            var authManager = new AuthenticationManager();
            var context = authManager.GetAzureADCredentialsContext(siteUrl, userPrincipal, Pwd);
            Console.WriteLine(context.GetAccessToken());
            return context.GetAccessToken();
        }
    }
}

введите описание изображения здесь

Ссылка:

Как получить токен доступа в SharePoint Online с помощью CSOM и использовать в Postman или Клиент Google Rest

person Jerry    schedule 15.04.2021