0

我的项目设置为使用azure ad作为登录名(来自 dotnet 核心模板)。我已经成功登录。

但是,我想使用相同的登录用户从sharepoint rest api检索数据。

我有以下方法:

public async Task<FileResults> Test()

    {
        var siteUrl = "https://xxxxx.sharepoint.com";

        var username = "xx@xx.no";
        var password = "xxxxxx";
        var securePassword = new SecureString();
        password.ToCharArray().ToList().ForEach(c => securePassword.AppendChar(c));
        var credentials = new SharePointOnlineCredentials(username, securePassword);

        var handler = new HttpClientHandler();
        handler.Credentials = credentials;

        var uri = new Uri(siteUrl);
        handler.CookieContainer.SetCookies(uri, credentials.GetAuthenticationCookie(uri));

        var json = string.Empty;
        using (var client = new HttpClient(handler))
        {
            client.DefaultRequestHeaders.Clear();
            client.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");
            var response = await client.GetAsync(siteUrl + "/_api/Web/GetFolderByServerRelativeUrl('/Delte%20dokumenter/Test')/Files");
            json = await response.Content.ReadAsStringAsync();

            var result = Newtonsoft.Json.JsonConvert.DeserializeObject<Rootobject>(json);
            var files = result.FileResults;
            return files;
        }
    }

这工作正常,我从 sharepoint 获取文档。但是,这是在使用硬编码凭据时。如何通过 azure AD 使用登录用户的凭据?我要检索访问令牌吗?

4

1 回答 1

0

要使用 Azure AD 身份验证,您需要拥有其中一个身份验证流

注意:不推荐使用用户名/密码流程。

之后,您将根据指定的范围获取令牌,并且您需要点击 Microsoft Graph Api,在内部,您需要根据您的要求点击 SharePoint API 端点。

您可以使用此示例开始探索

于 2020-06-15T17:21:05.273 回答