dotnet Core - 使用 azure AD 身份验证从 Sharepoint REST API 检索数据
dotnet Core - Using azure AD authentication to retrive data from sharepoint REST API
我的项目设置为使用 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;
}
}
这工作正常,我正在从共享点获取文档。
但是,这是在使用硬编码凭据时。如何通过 azure AD 使用登录用户的凭据?我要取回访问令牌吗?
要使用 Azure AD 身份验证,您需要具有 Authentication flows.
之一
注:Username/Password流量为not recommended。
之后您将根据指定的范围获取令牌,您需要点击 Microsoft Graph Api,在内部您需要根据您的要求点击 SharePoint API 端点要求。
您可以开始探索这个 sample
我的项目设置为使用 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;
}
}
这工作正常,我正在从共享点获取文档。 但是,这是在使用硬编码凭据时。如何通过 azure AD 使用登录用户的凭据?我要取回访问令牌吗?
要使用 Azure AD 身份验证,您需要具有 Authentication flows.
之一注:Username/Password流量为not recommended。
之后您将根据指定的范围获取令牌,您需要点击 Microsoft Graph Api,在内部您需要根据您的要求点击 SharePoint API 端点要求。
您可以开始探索这个 sample