Я пытаюсь получить доступ к сайту SharePoint с помощью токена доступа, сгенерированного CRM и AAD. С помощью имени пользователя и пароля я могу получить доступ к сайту. То же имя пользователя и пароль я передаю, чтобы получить токен. Когда я передаю токен, я получаю 401 несанкционированную ошибку.
private bool GetCRMToken(CRMSettings crmSettings)
{
bool GetCRMTokenSuccess = false;
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("https://login.microsoftonline.com/" + some tenant id + "/oauth2/token");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string("client_id",ClientId),
new KeyValuePair<string, string>("resource",Resource),
new KeyValuePair<string, string>("username",Username),
new KeyValuePair<string, string>("password",Password),
new KeyValuePair<string, string>("Client_Secret",ClientSecret),
new KeyValuePair<string, string>("grant_type","password")
});
var response = client.PostAsync(client.BaseAddress, content).Result;
string resultContent = response.Content.ReadAsStringAsync().Result;
if (response.IsSuccessStatusCode)
{
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
GlobalDataStorage.CRMToken = JsonConvert.DeserializeObject<TokenResponseModel>(resultContent);
GetCRMTokenSuccess = true;
}
}
else
{
var str = exp.error;
GetCRMTokenSuccess = false;
}
}
return GetCRMTokenSuccess;
}
Для доступа к сайту sharepoint я передаю токен, как показано ниже
context.ExecutingWebRequest += delegate (object sender, WebRequestEventArgs e)
{
e.WebRequestExecutor.WebRequest.Headers.Add("Authorization", "Bearer " + accessToken);
//e.WebRequestExecutor.WebRequest.CookieContainer = cc;
};
После выполнения в context.executequery я получаю исключение 401.